#![forbid(unsafe_code)]
pub mod app;
pub use app::App;
pub use nagisa_core::{
add_outgoing_logger,
awake,
awake_silent,
collect_into,
from_user,
group_admin,
group_only,
group_owner,
in_group,
keyword,
private,
registered_plugins,
registered_triggers_resolved as registered_triggers,
replying,
run_dispatch,
superuser,
switch,
to_me,
AdminChange,
ArgError,
ArgKind,
ArgSpec,
ArgText,
ArgToken,
Args,
ArgsMeta,
At,
Bot,
BotOffline,
BotOnline,
Captures,
Category,
Cd,
CdKey,
Command,
CommandArg,
Connect,
Cooldown,
CooldownScope,
CooldownStore,
Ctx,
DevMode,
Disconnect,
EnabledOverrides,
EnabledSet,
EventKind,
EventPeer,
EventSource,
Extracted,
Flank,
FlightGuard,
Flow,
FriendAdd,
FriendRef,
FriendRequest,
FromArg,
FromContext,
FromSlots,
FromTailText,
GateReply,
GroupCardChange,
GroupJoinRequest,
GroupMessage,
GroupRef,
Handler,
HandlerOutcome,
HandlerResult,
Heartbeat,
Honor,
Image,
KillSwitch,
LuckyKing,
Matcher,
MemberJoin,
MemberLeave,
MemberRef,
Middleware,
Mute,
NamedCaptures,
Next,
Nudge,
ParseArgs,
ParsedCommand,
PluginMeta,
PrivateMessage,
RateLimit,
RateLimitScope,
Ready,
Recall,
Reject,
Rendezvous,
RendezvousSnapshot,
Replied,
Reply,
ReplyMsg,
Router,
Rule,
Scope,
Sender,
Service,
ServiceBus,
Session,
ShutdownToken,
SleepState,
SlotSpec,
SlotValue,
Slots,
State,
Superusers,
Supervisor,
SwitchKey,
Tail,
ToMe,
TriggerId,
TriggerKind,
TriggerMeta,
TriggerSpec,
WaitFlow,
Waiter,
WaiterDepth,
WaiterStore,
};
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, MessageEvent, Meta, 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, ArgToken, ArgsMeta, 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, Replied, 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};
}