Skip to content

Intents

Intents 是传给 Client::new 的位标志集合,用于告诉网关需要投递哪些事件类别。Intents::default() 是公域预设;如果想要严格的最小订阅集合,请从 Intents::new() 开始,只开启自己列出的标志。

构造方式

  • Intents::new() —— 空集。
  • Intents::default() —— 标准公域预设,包含非特权公开事件类别,但不包含 GUILD_MESSAGESFORUMSENTER_AIO
  • Intents::all() —— 框架表示的全部标准标志,但不包含 ENTER_AIO。它会包含特权位,请只在权限已审批时使用;需要 AIO 进入事件时再额外调用 with_enter_aio()

切换标志

每个 intent 既以 pub constu32 形式暴露在 Intents 类型上,也提供同名的链式 with_* 方法:

rust
use botrs::Intents;

let intents = Intents::new()
    .with_public_guild_messages()
    .with_direct_message()
    .with_guilds();

也可以用 Intents::with_intent(Intents::GUILDS) 把原始常量按位组合。

标志一览

标志构建器网关投递的事件
GUILDSwith_guildsguild_create / guild_update / guild_delete
GUILD_MEMBERSwith_guild_membersguild_member_add / _update / _remove
GUILD_MESSAGES(特权)with_guild_messages频道全量消息(message_create 等)
GUILD_MESSAGE_REACTIONSwith_guild_message_reactions表情添加 / 移除
DIRECT_MESSAGEwith_direct_message私聊 direct_message_create
PUBLIC_GUILD_MESSAGESwith_public_guild_messages@ 消息 message_create,非特权
PUBLIC_MESSAGESwith_public_messages群聊 / C2C 消息
INTERACTIONwith_interaction按钮 / interaction 事件
MESSAGE_AUDITwith_message_audit消息审核通过 / 拒绝
FORUMS(特权)with_forums论坛主题 / 帖子 / 回复 / 发布审核
AUDIO_ACTIONwith_audio_action音频开始 / 结束 / 上下麦
OPEN_FORUM_EVENTwith_open_forum_event公开论坛主题 / 帖子 / 回复
ENTER_AIOwith_enter_aio单聊(AIO)进入事件
AUDIO_OR_LIVE_CHANNEL_MEMBERwith_audio_or_live_channel_member语音 / 直播子频道成员进出

特权 intent(GUILD_MESSAGESFORUMS)需要在开发者后台申请权限,否则网关在 identify 时会拒绝连接。

运行时查询

contains(flag) 用于检查某一位;同名访问器(如 intents.guilds()intents.public_guild_messages())返回 bool

基于 MIT 许可证发布