Skip to main content

botrs/
lib.rs

1// the api indeed have a lot of arguments
2#![allow(clippy::too_many_arguments)]
3#![doc = include_str!("../README.md")]
4
5#[macro_use]
6mod macros;
7
8pub mod api;
9pub mod audio;
10pub mod client;
11pub mod connection;
12pub mod constant;
13pub mod error;
14pub mod event;
15pub mod facade;
16pub mod forum;
17pub mod gateway;
18pub mod http;
19pub mod intents;
20pub mod interaction;
21pub mod log;
22pub mod manage;
23pub mod models;
24pub mod openapi;
25pub mod options;
26pub mod reaction;
27pub mod remote;
28pub mod search;
29pub mod session_manager;
30pub mod signature;
31pub mod token;
32pub mod version;
33pub mod webhook;
34pub mod websocket;
35
36// Re-export main types for convenience
37pub use api::BotApi;
38pub use audio::{Audio, AudioControl, AudioStatus, PublicAudio, PublicAudioType};
39pub use client::{Client, Context, EventHandler};
40pub use connection::{ConnectionSession, ConnectionState, Session};
41pub use constant::*;
42pub use error::{BotError, Result};
43pub use event::{
44    ATMessageEventHandler, AudioEventHandler, C2CFriendEventHandler, C2CMessageEventHandler,
45    ChannelEventHandler, DirectMessageDeleteEventHandler, DirectMessageEventHandler,
46    EnterAIOEventHandler, ErrorNotifyHandler, ForumAuditEventHandler, GroupATMessageEventHandler,
47    GuildEventHandler, GuildMemberEventHandler, InteractionEventHandler, MessageAuditEventHandler,
48    MessageDeleteEventHandler, MessageEventHandler, MessageReactionEventHandler, ParseAndHandle,
49    ParseData, PlainEventHandler, PostEventHandler, PublicMessageDeleteEventHandler, ReadyHandler,
50    RegisterHandler, RegisterHandlers, ReplyEventHandler, SubscribeMsgStatusEventHandler,
51    ThreadEventHandler,
52};
53pub use facade::{
54    DefaultImpl, NewOpenAPI, NewSandboxOpenAPI, RegisterDispatchEventHandler, SelectOpenAPIVersion,
55    SetLogger, SetOpenAPIClient, SetSessionManager, SetWebsocketClient,
56};
57pub use forum::{
58    Content, Format, ForumAuditResult, OpenThread, Post, PostInfo, Reply, ReplyInfo, Thread,
59    ThreadInfo, Title,
60};
61pub use intents::Intents;
62pub use interaction::{
63    Interaction, InteractionData, InteractionDataType, InteractionType, SearchInputResolved,
64    SearchLayout, SearchRecord, SearchRsp,
65};
66pub use log::{
67    Debug, Debugf, DefaultLogger, Error as LogError, Errorf, Info, Infof, Logger, Sync, Warn, Warnf,
68};
69pub use manage::{
70    C2CManageEvent, EnterAioEvent, GroupManageEvent, ManageEventType, SubscribeMessageStatusData,
71    SubscribeMsgTemplateResult,
72};
73pub use models::gateway::Ready;
74pub use models::*;
75pub use openapi::{
76    APIPermissionsAPI, AnnouncesAPI, AudioAPI, Base, ChannelAPI, ChannelPermissionsAPI,
77    DirectMessageAPI, DoReqFilterChains, DoRespFilterChains, FilterContext, GuildAPI, HTTPFilter,
78    InteractionAPI, IsSuccessStatus, MemberAPI, MessageAPI, MessageReactionAPI, MessageSettingAPI,
79    OpenAPI, PinsAPI, Register as RegisterOpenAPI, RegisterReqFilter, RegisterRespFilter, RoleAPI,
80    ScheduleAPI, UserAPI, WebhookAPI, WebsocketAPI,
81};
82pub use options::{OpenApiOption, Options, WithHideTip, WithURL};
83pub use reaction::{
84    Emoji as ReactionEmoji, MessageReaction, MessageReactionPager, MessageReactionUsers, Reaction,
85    ReactionTarget, ReactionTargetType, ReactionUsers,
86};
87pub use remote::{
88    ErrGotLockFailed, ErrProduceFailed, ErrSessionMarshalFailed, ErrorNotOk, Lock,
89    Option as RemoteOption, RedisManager, WithClusterKey,
90};
91pub use search::{Config as SearchConfig, SimulateSearch};
92pub use session_manager::{
93    CalcInterval, CanNotIdentify, CanNotIdentifyErrSet, CanNotResume, CanNotResumeErrSet,
94    ChanManager, CheckSessionLimit, NewSessionManager, Session as ManagedSession, SessionManager,
95    calc_interval, new_session_manager, set_session_manager_factory,
96};
97pub use signature::{Generate, HeaderSig, HeaderTimestamp, Verify};
98pub use token::{
99    NewQQBotTokenSource, QQBotCredentials, QQBotTokenSource, StartRefreshAccessToken, Token,
100    TypeBearer, TypeQQBot,
101};
102pub use version::version_string;
103pub use webhook::{
104    DefaultGetSecretFunc, GenDispatchACK, GenHeartbeatACK, GenValidationACK, HTTPHandler,
105};
106pub use websocket::{
107    ClientImpl, DefaultQueueSize, PanicBufLen, PanicHandler, Register as RegisterWebSocket,
108    RegisterHandlers as RegisterWebSocketHandlers, RegisterResumeSignal, ResumeSignal, WebSocket,
109};
110
111/// The current version of the library
112pub const VERSION: &str = env!("CARGO_PKG_VERSION");
113
114/// Default timeout for HTTP requests in seconds
115pub const DEFAULT_TIMEOUT: u64 = 30;
116
117/// Default WebSocket URL for QQ Guild API
118pub const DEFAULT_WS_URL: &str = "wss://api.sgroup.qq.com/websocket";
119
120/// Default API base URL for QQ Guild API
121pub const DEFAULT_API_URL: &str = "https://api.sgroup.qq.com";
122
123/// Sandbox API base URL for testing
124pub const SANDBOX_API_URL: &str = "https://sandbox.api.sgroup.qq.com";