插件屏蔽指定群聊所谈
本文最后更新于104 天前,其中的信息可能已经过时,如有错误请发送邮件到skyfutu@qq.com

前言

有针对部分群聊屏蔽插件的需求

过程

根据需求,换句话说就是不对指定群聊进行响应,刚开始以为挺简单的,去看Mirai的Docs找到群号的参数行了

{
  "type": "BotJoinGroupEvent",
  "group": {
    "id": 123456789,
    "name": "Miral Technology",
    "permission": "MEMBER"
  },
  invitor: null
}

从中我们可以看到,参数就是group.id,然后加个if的判断语句就实现了!就完成了以下代码:

    def handle_group_message(self, event: EventContext, **kwargs):
        group_id = kwargs.get("group_id")

        # 判断
        if group_id == "114514":
            return  # 返回了个寂寞

函数完成后本以为就此结束了,没想到没实现这个功能,并没有屏蔽指定qq群。这时我才意识到我是基于开源扩展plugin的,也就是说,插件不能直接读取到mirai的参数。
找到原因后,首先我去看了下消息函数,发现有这么一段代码

            args = {
                "launcher_type": launcher_type,
                "launcher_id": launcher_id,
                "sender_id": sender_id,
                "text_message": text_message,
            }

这个事件把mirai的api接口返回的消息分成如下
launcher_type是类型,私聊还是群聊
launcher_id是qq号/群号
sender_id为id
text_message就是留给我们插件检测的,例如sky ba,响应头就是sky,而ba就是指令,储存在text_message

虽然不能直接读取mirai接口的参数,但我们可以读取程序作者写的函数返回的参数,那么就只需要改成

        if launcher_type == 'group' and launcher_id == 114514:
            event.prevent_default()
            return []

if语句进行判断两个参数,因为是屏蔽,所以返回空就行了,完成修改后热重启机器人,很显然轻松秒杀。

结尾

其实这也没什么技术含量,只是我闲的没事写的,文笔不太好,见谅…祝大家元宵节快乐!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇