nonebot2 QQ防撤回插件

代码如下:

import json
from nonebot import on_notice, Bot
from nonebot.adapters.onebot.v11 import GroupRecallNoticeEvent, FriendRecallNoticeEvent

def extract_message_info(message_list):
    extracted_messages = []
    
    for msg in message_list:
        if msg['type'] == 'text':
            extracted_messages.append(f"文本: {msg['data']['text']}")
        elif msg['type'] == 'image':
            extracted_messages.append(f"图片: {msg['data']['url']}")
    
    return "\n".join(extracted_messages)

group_recall = on_notice(rule=lambda bot, event: isinstance(event, GroupRecallNoticeEvent), priority=50)
friend_recall = on_notice(rule=lambda bot, event: isinstance(event, FriendRecallNoticeEvent), priority=50)

@group_recall.handle()
async def handle_group_recall(bot: Bot, event: GroupRecallNoticeEvent):
    msg = await bot.call_api('get_msg', **{"message_id": event.message_id})
    mesg = msg['message']
    extracted_mesg = extract_message_info(mesg)
    # await bot.call_api('send_group_msg', **{"group_id": event.group_id,
    #                                         "message": f"{event.user_id} 撤回了一条消息:\n{extracted_mesg}"})
    await bot.call_api('send_private_msg', **{"user_id": 你的QQ号,
                                              "message": f"群 {event.group_id} 的 {event.user_id} 撤回了一条消息:\n{extracted_mesg}"})

@friend_recall.handle()
async def handle_friend_recall(bot: Bot, event: FriendRecallNoticeEvent):
    msg = await bot.call_api('get_msg', **{"message_id": event.message_id})
    mesg = msg['message']
    extracted_mesg = extract_message_info(mesg)
    await bot.call_api('send_private_msg', **{"user_id": event.user_id,
                                              "message": f"你撤回了一条消息:\n{extracted_mesg}"})

注释部分为直接在群里发出撤回信息,不太好,还是偷偷转发给某人吧。

效果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值