本文档概述botpy的事件监听
import botpy
通过继承实现bot.Client
, 实现自己的机器人Client
在MyClient
类中调用函数实现处理事件的功能
class MyClient(botpy.Client):
首先需要订阅事件public_guild_messages
intents = botpy.Intents(public_guild_messages=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_at_message_create(self, message: Message) | 当收到@机器人的消息时 |
on_public_message_delete(self, message: Message) | 当频道的消息被删除时 |
- 注:需要引入
Message
from botpy.message import Message
class MyClient(botpy.Client):
async def on_at_message_create(self, message: Message):
"""
此处为处理该事件的代码
"""
async def on_public_message_delete(self, message: Message):
"""
此处为处理该事件的代码
"""
- 仅 私域 机器人能够设置此 intents
首先需要订阅事件guild_messages
intents = botpy.Intents(guild_messages=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_message_create(self, message: Message) | 发送消息事件,代表频道内的全部消息,而不只是 at 机器人的消息。 内容与 AT_MESSAGE_CREATE 相同 |
on_message_delete(self, message: Message) | 删除(撤回)消息事件 |
- 注:需要引入
Message
from botpy.message import Message
class MyClient(botpy.Client):
async def on_message_create(self, message: Message):
"""
此处为处理该事件的代码
"""
async def on_message_delete(self, message: Message):
"""
此处为处理该事件的代码
"""
首先需要订阅事件direct_message
intents = botpy.Intents(direct_message=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_direct_message_create(self, message: DirectMessage) | 当收到用户发给机器人的私信消息时 |
on_direct_message_delete(self, message: DirectMessage) | 删除(撤回)消息事件 |
- 注:需要引入
DirectMessage
from botpy.message import DirectMessage
class MyClient(botpy.Client):
async def on_direct_message_create(self, message: DirectMessage):
"""
此处为处理该事件的代码
"""
async def on_direct_message_delete(self, message: DirectMessage):
"""
此处为处理该事件的代码
"""
首先需要订阅事件guild_message_reactions
intents = botpy.Intents(guild_message_reactions=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_message_reaction_add(self, reaction: Reaction) | 为消息添加表情表态 |
on_message_reaction_remove(self, reaction: Reaction) | 为消息删除表情表态 |
- 注:需要引入
Reaction
from botpy.reaction import Reaction
class MyClient(botpy.Client):
async def on_message_reaction_add(self, reaction: Reaction):
"""
此处为处理该事件的代码
"""
async def on_message_reaction_remove(self, reaction: Reaction):
"""
此处为处理该事件的代码
"""
首先需要订阅事件guilds
intents = botpy.Intents(guilds=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_guild_create(self, guild: Guild) | 当机器人加入新guild时 |
on_guild_update(self, guild: Guild) | 当guild资料发生变更时 |
on_guild_delete(self, guild: Guild) | 当机器人退出guild时 |
on_channel_create(self, channel: Channel) | 当channel被创建时 |
on_channel_update(self, channel: Channel) | 当channel被更新时 |
on_channel_delete(self, channel: Channel) | 当channel被删除时 |
- 注:需要引入
Guild
和Channel
from botpy.guild import Guild
from botpy.channel import Channel
class MyClient(botpy.Client):
async def on_guild_create(self, guild: Guild):
"""
此处为处理该事件的代码
"""
async def on_guild_update(self, guild: Guild):
"""
此处为处理该事件的代码
"""
async def on_guild_delete(self, guild: Guild):
"""
此处为处理该事件的代码
"""
async def on_channel_create(self, channel: Channel):
"""
此处为处理该事件的代码
"""
async def on_channel_update(self, channel: Channel):
"""
此处为处理该事件的代码
"""
async def on_channel_delete(self, channel: Channel):
"""
此处为处理该事件的代码
"""
首先需要订阅事件guild_members
intents = botpy.Intents(guild_members=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_guild_member_add(self, member: Member) | 当成员加入时 |
on_guild_member_update(self, member: Member) | 当成员资料变更时 |
on_guild_member_remove(self, member: Member) | 当成员被移除时 |
- 注:需要引入
GuildMember
from botpy.user import Member
class MyClient(botpy.Client):
async def on_guild_member_add(self, member: Member):
"""
此处为处理该事件的代码
"""
async def on_guild_member_update(self, member: Member):
"""
此处为处理该事件的代码
"""
async def on_guild_member_remove(self, member: Member):
"""
此处为处理该事件的代码
"""
首先需要订阅事件interaction
intents = botpy.Intents(interaction=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_interaction_create(self, interaction: Interaction) | 当收到用户发给机器人的私信消息时 |
- 注:需要引入
Interaction
from botpy.interaction import Interaction
class MyClient(botpy.Client):
async def on_interaction_create(self, interaction: Interaction):
"""
此处为处理该事件的代码
"""
首先需要订阅事件message_audit
intents = botpy.Intents(message_audit=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_message_audit_pass(self, message: MessageAudit) | 消息审核通过 |
on_message_audit_reject(self, message: MessageAudit) | 消息审核不通过 |
- 注:需要引入
MessageAudit
from botpy.message import MessageAudit
class MyClient(botpy.Client):
async def on_message_audit_pass(self, message: MessageAudit):
"""
此处为处理该事件的代码
"""
async def on_message_audit_reject(self, message: MessageAudit):
"""
此处为处理该事件的代码
"""
- 仅 私域 机器人能够设置此 intents
首先需要订阅事件forums
intents = botpy.Intents(forums=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_forum_thread_create(self, thread: Thread) | 当用户创建主题时 |
on_forum_thread_update(self, thread: Thread) | 当用户更新主题时 |
on_forum_thread_delete(self, thread: Thread) | 当用户删除主题时 |
on_forum_post_create(self, post: Post) | 当用户创建帖子时 |
on_forum_post_delete(self, post: Post) | 当用户删除帖子时 |
on_forum_reply_create(self, reply: Reply) | 当用户回复评论时 |
on_forum_reply_delete(self, reply: Reply) | 当用户删除评论时 |
on_forum_publish_audit_result(self, auditresult: AuditResult) | 当用户发表审核通过时 |
- 注:需要引入
Thread
、Post
、Reply
和AuditResult
from botpy.forum import Thread
from botpy.types.forum import Post, Reply, AuditResult
class MyClient(botpy.Client):
async def on_forum_thread_create(self, thread: Thread):
"""
此处为处理该事件的代码
"""
async def on_forum_thread_update(self, thread: Thread):
"""
此处为处理该事件的代码
"""
async def on_forum_thread_delete(self, thread: Thread):
"""
此处为处理该事件的代码
"""
async def on_forum_post_create(self, post: Post):
"""
此处为处理该事件的代码
"""
async def on_forum_post_delete(self, post: Post):
"""
此处为处理该事件的代码
"""
async def on_forum_reply_create(self, reply: Reply):
"""
此处为处理该事件的代码
"""
async def on_forum_reply_delete(self, reply: Reply):
"""
此处为处理该事件的代码
"""
async def on_forum_publish_audit_result(self, auditresult: AuditResult):
"""
此处为处理该事件的代码
"""
首先需要订阅事件audio_action
intents = botpy.Intents(audio_action=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_audio_start(self, audio: Audio) | 音频开始播放时 |
on_audio_finish(self, audio: Audio) | 音频播放结束时 |
on_audio_on_mic(self, audio: Audio) | 上麦时 |
on_audio_off_mic(self, audio: Audio) | 下麦时 |
- 注:需要引入
Audio
from botpy.audio import Audio
class MyClient(botpy.Client):
async def on_audio_start(self, audio: Audio):
"""
此处为处理该事件的代码
"""
async def on_audio_finish(self, audio: Audio):
"""
此处为处理该事件的代码
"""
async def on_audio_on_mic(self, audio: Audio):
"""
此处为处理该事件的代码
"""
async def on_audio_off_mic(self, audio: Audio):
"""
此处为处理该事件的代码
"""
首先需要订阅事件audio_or_live_channel_member
intents = botpy.Intents(audio_or_live_channel_member=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_audio_or_live_channel_member_enter(self, Public_Audio: PublicAudio) | 用户进入音视频/直播子频道时 |
on_audio_or_live_channel_member_exit(self, Public_Audio: PublicAudio) | 用户退出音视频/直播子频道时 |
- 注:需要引入
PublicAudio
from botpy.audio import PublicAudio
class MyClient(botpy.Client):
async def on_audio_or_live_channel_member_enter(self, Public_Audio: PublicAudio):
"""
此处为处理该事件的代码
"""
async def on_audio_or_live_channel_member_exit(self, Public_Audio: PublicAudio):
"""
此处为处理该事件的代码
"""
首先需要订阅事件open_forum_event
intents = botpy.Intents(open_forum_event=True)
client = MyClient(intents=intents)
对应函数 | 说明 |
---|---|
on_open_forum_thread_create(self, open_forum_thread: OpenThread) | 用户创建主题时 |
on_open_forum_thread_update(self, open_forum_thread: OpenThread) | 用户修改主题时 |
on_open_forum_thread_delete(self, open_forum_thread: OpenThread) | 用户删除主题时 |
on_open_forum_post_create(self, open_forum_thread: OpenThread) | 用户创建帖子时 |
on_open_forum_post_delete(self, open_forum_thread: OpenThread) | 用户删除帖子时 |
on_open_forum_reply_create(self, open_forum_thread: OpenThread) | 用户回复评论时 |
on_open_forum_reply_delete(self, open_forum_thread: OpenThread) | 用户删除评论时 |
- 注:需要引入
Audio
from botpy.audio import Audio
class MyClient(botpy.Client):
async def on_audio_start(self, audio: Audio):
"""
此处为处理该事件的代码
"""
async def on_audio_finish(self, audio: Audio):
"""
此处为处理该事件的代码
"""
async def on_audio_on_mic(self, audio: Audio):
"""
此处为处理该事件的代码
"""
async def on_audio_off_mic(self, audio: Audio):
"""
此处为处理该事件的代码
"""
intents = botpy.Intents()
client = MyClient(intents=intents)
在Intents中填入对应的参数
例子:
intents = botpy.Intents(public_guild_messages=True, direct_message=True, guilds=True)
intents = botpy.Intents.none()
然后打开对应的订阅(参数列表)
intents.public_guild_messages = True
intents.direct_message = True
intents.guilds = True
- 说明
方法二对应的快捷订阅方式为
- 订阅所有事件
intents = botpy.Intents.all()
- 订阅所有的公域事件
intents = botpy.Intents.default()
参数 | 含义 |
---|---|
public_guild_messages | 公域消息事件 |
guild_messages | 消息事件 (仅 私域 机器人能够设置此 intents) |
direct_message | 私信事件 |
guild_message_reactions | 消息相关互动事件 |
guilds | 频道事件 |
guild_members | 频道成员事件 |
interaction | 互动事件 |
message_audit | 消息审核事件 |
forums | 论坛事件 (仅 私域 机器人能够设置此 intents) |
audio_action | 音频事件 |