WSS 消息体

当前支持的事件类型

  1. class HandlerType(Enum):
  2. PLAIN_EVENT_HANDLER = 0 # 透传事件
  3. GUILD_EVENT_HANDLER = 1 # 频道事件
  4. GUILD_MEMBER_EVENT_HANDLER = 2 # 频道成员事件
  5. CHANNEL_EVENT_HANDLER = 3 # 子频道事件
  6. MESSAGE_EVENT_HANDLER = 4 # 消息事件
  7. AT_MESSAGE_EVENT_HANDLER = 5 # At消息事件
  8. DIRECT_MESSAGE_EVENT_HANDLER = 6 # 私信事件
  9. AUDIO_EVENT_HANDLER = 7 # 音频事件
  10. MESSAGE_REACTIONS_EVENT_HANDLER = 8 # 表情表态事件

当前支持的事件

  1. class WsEvent:
  2. EventGuildCreate = "GUILD_CREATE"
  3. EventGuildUpdate = "GUILD_UPDATE"
  4. EventGuildDelete = "GUILD_DELETE"
  5. EventChannelCreate = "CHANNEL_CREATE"
  6. EventChannelUpdate = "CHANNEL_UPDATE"
  7. EventChannelDelete = "CHANNEL_DELETE"
  8. EventGuildMemberAdd = "GUILD_MEMBER_ADD"
  9. EventGuildMemberUpdate = "GUILD_MEMBER_UPDATE"
  10. EventGuildMemberRemove = "GUILD_MEMBER_REMOVE"
  11. EventMessageCreate = "MESSAGE_CREATE"
  12. EventDirectMessageCreate = "DIRECT_MESSAGE_CREATE"
  13. EventAtMessageCreate = "AT_MESSAGE_CREATE"
  14. EventAudioStart = "AUDIO_START"
  15. EventAudioFinish = "AUDIO_FINISH"
  16. EventAudioOnMic = "AUDIO_ON_MIC"
  17. EventAudioOffMic = "AUDIO_OFF_MIC"
  18. EventMessageReactionAdd = "MESSAGE_REACTION_ADD"
  19. EventMessageReactionRemove = "MESSAGE_REACTION_REMOVE"

当前事件的返回类型

  1. #透传事件(无具体的数据对象,根据后台返回Json对象)
  2. def _plain_handler(event, data):
  3. #频道事件
  4. def _guild_handler(event, guild:Guild):
  5. #频道成员事件
  6. def _guild_member_handler(event, guild_member: GuildMember):
  7. #子频道事件
  8. def _channel_handler(event, channel: Channel):
  9. #消息事件
  10. def _message_handler(event, message: Message):
  11. #At消息事件
  12. def _message_handler(event, message: Message):
  13. #私信消息事件
  14. def _message_handler(event, message: Message):
  15. #表情表态消息事件
  16. def _message_reactions_handler(event, reaction: Reaction):

使用示例

创建 WSS 实例并监听消息

  1. import qqbot
  2. token = qqbot.Token({appid}, {token})
  3. def _message_handler(event, message: Message):
  4. msg_api = qqbot.MessageAPI(t_token, False)
  5. # 打印返回信息
  6. qqbot.logger.info("event %s" % event + ",receive message %s" % message.content)
  7. # 构造消息发送请求数据对象
  8. send = qqbot.MessageSendRequest("<@%s>谢谢你,加油" % message.author.id, message.id)
  9. # 通过api发送回复消息
  10. msg_api.post_message(message.channel_id, send)
  11. qqbot_handler = qqbot.Handler(qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler)
  12. qqbot.listen_events(token, False, qqbot_handler)

如果同时需要监听多个事件,在listen_events增加多个事件的handler对象

  1. # 同时监听at消息和私信消息的事件
  2. qqbot_handler = qqbot.Handler(
  3. qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
  4. )
  5. qqbot_direct_message_handler = qqbot.Handler(
  6. qqbot.HandlerType.DIRECT_MESSAGE_EVENT_HANDLER, _direct_message_handler
  7. )
  8. qqbot.listen_events(token, False, qqbot_handler, qqbot_direct_message_handler)