#![forbid(unsafe_code)]
pub mod app;
pub use app::App;
pub use nagisa_core::{
collect_into,
registered_plugins,
registered_triggers_resolved as registered_triggers,
Category,
PluginMeta,
run_dispatch,
Bot,
add_outgoing_logger,
ArgError,
ArgToken,
Args,
ArgText,
ArgKind,
ArgSpec,
ArgsMeta,
FromArg,
ParseArgs,
Captures,
Command,
CommandArg,
At,
Image,
TriggerSpec,
TriggerMeta,
TriggerKind,
Ctx,
DevMode,
AdminChange,
EventKind,
FriendAdd,
FriendRequest,
GroupCardChange,
GroupJoinRequest,
Honor,
LuckyKing,
MemberJoin,
MemberLeave,
Mute,
Nudge,
Recall,
Connect,
Disconnect,
Ready,
BotOnline,
BotOffline,
Heartbeat,
EnabledOverrides,
EnabledSet,
SwitchKey,
EventPeer,
EventSource,
Extracted,
FromContext,
GroupMessage,
Handler,
HandlerOutcome,
HandlerResult,
Matcher,
ParsedCommand,
Flank,
FromSlots,
FromTailText,
NamedCaptures,
SlotSpec,
SlotValue,
Slots,
Tail,
PrivateMessage,
Reject,
Reply,
ReplyMsg,
Router,
Sender,
Service,
ServiceBus,
ShutdownToken,
State,
Supervisor,
ToMe,
Flow,
Middleware,
Next,
RateLimit,
RateLimitScope,
FlightGuard,
Scope,
Session,
WaitFlow,
Waiter,
WaiterDepth,
WaiterStore,
Rendezvous,
RendezvousSnapshot,
Cd,
CdKey,
Cooldown,
CooldownScope,
CooldownStore,
TriggerId,
FriendRef,
GroupRef,
MemberRef,
Rule,
Superusers,
from_user,
group_admin,
group_only,
group_owner,
in_group,
keyword,
private,
superuser,
to_me,
switch,
awake,
awake_silent,
replying,
GateReply,
KillSwitch,
SleepState,
};
pub mod adapter {
pub use nagisa_core::adapter::{ActionInvoker, Actions, MilkyActions, OneBotActions};
}
pub mod engine {
pub use nagisa_core::engine::{Check, ErasedHandler, Selector, StateMap, WaiterBuilder};
}
pub use nagisa_core::inventory;
pub use nagisa_core::async_trait;
pub use nagisa_types::capability::{Capability, Protocol};
pub use nagisa_types::vendor::Vendor;
pub use nagisa_types::entity::{
AiCharacter, AiCharacterGroup, Announcement, Business, EssenceMessage, FileFetch, FileMeta,
FriendCategory, FriendCategoryList, FriendGroup, FriendInfo, FriendStatus, GroupFileList,
GroupFolder, GroupInfo, HonorList, HonorMember, ImplStatus, MemberInfo, ProfileLiker, Rkey,
Role, Sex, UserInfo,
};
pub use nagisa_core::ImplInfo;
pub use nagisa_types::context::Context;
pub use nagisa_types::error::{ActionErrorKind, Error, Result, TransportError};
pub use nagisa_types::bail;
pub use nagisa_types::event::{
Event, HonorKind, Meta, MessageEvent, Notice, RawEvent, ReactionKind, Request, RequestToken,
};
pub use nagisa_types::id::{MessageId, Peer, Scene, Uin};
pub use nagisa_types::message::{Message, MessageExt, Msg};
pub use nagisa_types::resource::{Media, ResourceRef, ResourceSource};
pub use nagisa_types::segment::{Forward, ForwardNode, ImageSubType, Segment};
pub use nagisa_types;
#[doc(hidden)]
pub use nagisa_core;
pub fn ctrl_c_shutdown() -> ShutdownToken {
let token = ShutdownToken::new();
let child = token.clone();
tokio::spawn(async move {
if tokio::signal::ctrl_c().await.is_err() {
tracing::warn!("ctrl_c signal listener failed; shutdown will not fire on Ctrl-C");
}
child.cancel();
});
token
}
pub use nagisa_macros::command;
pub use nagisa_macros::plugin;
pub use nagisa_macros::event;
pub use nagisa_macros::Args;
pub use nagisa_macros::ArgEnum;
pub use nagisa_macros::Slots;
pub use nagisa_macros::matcher;
#[cfg(feature = "onebot")]
pub use nagisa_onebot;
#[cfg(feature = "onebot")]
pub use nagisa_onebot::{OneBotAdapter, OneBotConfig};
#[cfg(feature = "milky")]
pub use nagisa_milky;
#[cfg(feature = "milky")]
pub use nagisa_milky::{MilkyAdapter, MilkyConfig, MilkyMode};
#[cfg(feature = "log")]
pub use nagisa_log as log;
#[cfg(feature = "render")]
pub use nagisa_render as render;
pub mod prelude {
pub use crate::{bail, command, event, matcher, plugin, ArgEnum, Args, Slots};
pub use crate::{ArgError, ArgKind, ArgSpec, ArgsMeta, ArgToken, FromArg, ParseArgs};
pub use crate::{FromSlots, FromTailText, SlotValue, Tail};
pub use crate::{ctrl_c_shutdown, App, Bot, Router, ShutdownToken};
pub use crate::async_trait;
pub use crate::{Service, ServiceBus, Supervisor};
pub use crate::{
ArgText, At, Captures, Command, CommandArg, Ctx, EventPeer, Extracted, FromContext,
GroupMessage, HandlerResult, Image, PrivateMessage, Reject, Reply, ReplyMsg, Sender, State,
ToMe,
};
pub use crate::{
awake, awake_silent, from_user, group_admin, group_only, group_owner, in_group, keyword,
private, replying, superuser, switch, to_me, GateReply, KillSwitch, Rule,
SleepState, Superusers,
};
pub use crate::{Cd, CdKey, Cooldown, CooldownScope, CooldownStore, TriggerId};
pub use crate::{Flow, Middleware, Next, RateLimit, RateLimitScope};
pub use crate::{Rendezvous, Scope, Session, WaitFlow, Waiter};
pub use crate::{FriendRef, GroupRef, MemberRef};
pub use crate::{
collect_into, registered_plugins, registered_triggers, Category, EnabledSet, EventKind,
PluginMeta, SwitchKey, TriggerKind, TriggerMeta, TriggerSpec,
};
pub use crate::{
AdminChange, BotOffline, BotOnline, Connect, Disconnect, FriendAdd, FriendRequest,
GroupCardChange, GroupJoinRequest, Heartbeat, Honor, LuckyKing, MemberJoin, MemberLeave,
Mute, Nudge, Ready, Recall,
};
pub use crate::{
ActionErrorKind, Capability, Context, Error, Event, Forward, ForwardNode, FriendInfo,
GroupInfo, Media, MemberInfo, Message, MessageEvent, MessageExt, MessageId, Msg, Notice,
Peer, Protocol, ReactionKind, Request, ResourceSource, Result, Scene, Segment, Uin,
};
#[cfg(feature = "onebot")]
pub use crate::OneBotConfig;
#[cfg(feature = "milky")]
pub use crate::{MilkyConfig, MilkyMode};
pub use crate::adapter::{Actions, MilkyActions, OneBotActions};
}