def on_notice(self, only_group: bool = True, **kwargs) -> "matcher_wrapper": rule = self.check_service(0, only_group) priority = kwargs.get('priority', 1) mw = matcher_wrapper(self, 'Notice', priority, only_group=only_group) self.matchers.append(str(mw)) mw.load_matcher(on_notice(rule, **kwargs)) _loaded_matchers[mw.matcher] = mw return mw
def decorator(func: Callable): # notice类型检查函数 async def checker(bot: Bot, event: Event, state: T_State): return event.get_event_name().find(notice_type) != -1 matcher = on_notice(rule=Rule(checker), **kwargs) @wraps(func) @self._pre_check() async def wrapper(bot: Bot, event: Event, state: T_State): await func(bot, event) logger.info( f'通知{event.get_event_name()}已被on_notice处理器{func.__name__}处理。' ) matcher.handle()(wrapper)
from random import choice, randint from datetime import date from nonebot.log import logger from nonebot.rule import to_me from nonebot.adapters.cqhttp import Bot, Event from nonebot.plugin import on_command, on_notice, on_keyword from src.utils.utils import counter from src.utils.rules import is_banned from src.utils.yaml_loader import yml_loader CONFIG_PATH = Path("./configs.yml") config = yml_loader(CONFIG_PATH) notice_handler = on_notice(rule=is_banned(), block=True) @notice_handler.handle() async def _(bot: Bot, event: Event, state: dict): if platform.system() == "Windows": event_type = event.detail_type else: event_type = event.notice_type if event_type == "group_increase": if str(event.user_id) == str(event.self_id): await notice_handler.finish("大家好啊") else: await notice_handler.finish("欢迎新人") elif event_type == "group_decrease":
from nonebot import get_driver, get_bots from nonebot.adapters.cqhttp import Bot from nonebot.adapters.cqhttp.message import Message from nonebot.adapters.cqhttp.event import (FriendRequestEvent, GroupBanNoticeEvent, GroupDecreaseNoticeEvent, GroupIncreaseNoticeEvent, LuckyKingNotifyEvent) from nonebot.plugin import on_notice, on_request, require WelcomePath = os.path.join(os.getcwd(), 'DataBase', 'Json', 'studylib.json') with open(WelcomePath, 'r', encoding="utf-8") as fr: handle_new_member = json.load( fr)['public']['preinstall_words']['handle_new_member'] scheduler = require('nonebot_plugin_apscheduler').scheduler # 定义计划任务 member_var = on_notice(priority=5, rule=check_white_list_group()) ban_members = on_notice(priority=5, rule=check_white_list_group()) lucky_king = on_notice(priority=5, rule=check_white_list_group()) friend_add = on_request(priority=5) gaokao_time = datetime.datetime(datetime.datetime.now().year, 6, 7) @member_var.handle() # 群成员变化检测 迎新 退群通告 async def _change_menbers(bot: Bot, event): if isinstance(event, GroupIncreaseNoticeEvent): # 增加 WelcomeTence = random.choice(handle_new_member) msg = Message(f'[CQ:at,qq={str(event.user_id)}]\n' f'{WelcomeTence}\n' '我只是个无情的机器人,请通过#help查看帮助\n' '顺带一提,年轻人要学会控制自己的欲望~~~') await member_var.finish(msg)
def NewFriendRequestEventRule(bot: Bot, event: Event, state: T_State): return isinstance(event, NewFriendRequestEvent) new_friend = on_request(NewFriendRequestEventRule) @new_friend.handle() async def _(bot: Bot, event: NewFriendRequestEvent, state: T_State): await event.approve(bot) time.sleep(1) text='见到你我很高兴\n输入帮助即可尽情玩弄机器人哦QaQ' await bot.send_friend_message(event.from_id,text) def BotJoinGroupEventRule(bot: Bot, event: Event, state: T_State): return isinstance(event, BotJoinGroupEvent) join_group = on_notice(BotJoinGroupEventRule) @join_group.handle() async def _(bot: Bot, event: BotJoinGroupEvent, state: T_State): time.sleep(1) text = '各位群友大家好\n输入帮助即可尽情玩弄机器人哦QaQ' if event.type=='BotJoinGroupEvent': time.sleep(1) await bot.send_group_message(dict(event.group)["id"], text) def BotInvitedJoinGroupRequestEventRule(bot: Bot, event: Event, state: T_State): return isinstance(event, BotInvitedJoinGroupRequestEvent) new_group = on_request(BotInvitedJoinGroupRequestEventRule) @new_group.handle() async def _(bot: Bot, event: BotInvitedJoinGroupRequestEvent, state: T_State):
from nonebot.plugin import on_notice from nonebot.adapters.cqhttp import GroupDecreaseNoticeEvent, GroupBanNoticeEvent import salmon from salmon import configs, Bot driver = salmon.driver() kick_me = on_notice() ban_me = on_notice() @driver.on_bot_connect async def connect(bot: Bot): feed_back = configs.SUPERUSERS[0] await bot.send_private_msg(user_id=feed_back, message='ただいま戻りました、主さま') @driver.on_bot_disconnect async def disconnect(bot: Bot): feed_back = configs.SUPERUSERS[0] try: await bot.send_private_msg(user_id=feed_back, message='连接已断开,请检查服务器') except: salmon.logger.error("WebSocket连接已断开") @kick_me.handle() async def kick_me_alert(bot: Bot, event: GroupDecreaseNoticeEvent): if event.is_tome(): group_id = event.group_id operator_id = event.operator_id if operator_id != event.self_id: # ignore myself
from nonebot import get_bots, get_driver, on_command, require from nonebot.adapters.cqhttp import Bot, Event from nonebot.adapters.cqhttp.message import Message from nonebot.adapters.cqhttp.event import GroupIncreaseNoticeEvent, GroupMessageEvent from nonebot.plugin import on_message, on_notice global memdic memdic = {} LogPath = os.path.join(os.getcwd(), 'DataBase', 'Json', 'datalog.json') StartTime = datetime.datetime.now() scheduler = require('nonebot_plugin_apscheduler').scheduler # 定义计划任务 water = on_command("water", priority=5, rule=check_white_list_all()) # 定义water查询命令 resetLog = on_command("resetLog", priority=5, rule=only_master()) # 定义手动重置模块 writeLog = on_message(rule=check_white_list_group(), priority=5) # 定义吹氵记录增加 addLog = on_notice(priority=5) # 定义群成员变动 async def get_water_list(groupID, bot): linedic = memdic[str(groupID)] findic = reversed( sorted(linedic.items(), key=lambda kv: (kv[1], kv[0]))) a = 0 pa = "-------氵怪排行榜-------" for elem in findic: UQID = elem[0] ts = elem[1] a = a+1 pa = pa + f"\n{a}.[CQ:at,qq={UQID}] 吹水{ts}次" if a == 5: break
async def bool_chehui_(bot: "Bot", event: "Event", state: T_State) -> bool: if event.get_type() != "notice": return False msg_dict = event.dict() # print(msg_dict) if msg_dict['user_id'] in [1761512493, 1928994748, 1793268622]: # if msg_dict['user_id'] in [1928994748]: return False if msg_dict['notice_type'] in ['friend_recall', 'group_recall']: if 'message_id' in msg_dict: msg_id = msg_dict['message_id'] state['msg_id'] = msg_id return True return False return Rule(bool_chehui_) recall = on_notice(rule=bool_recall()) @recall.handle() async def chehui_test(bot: Bot, event: Event, state: dict): msg_id = state['msg_id'] msg = await bot.get_msg(message_id=msg_id) timeArray = time.localtime(msg['time']) time_now = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) await bot.send(event, message=Message(msg['raw_message']) + "\n发送时间: " + time_now + "\n发送人: " + str(msg['sender']['nickname']))
"?", "差不多得了😅", "欺负咱这好吗?这不好", "我希望你耗子尾汁" ]) await pokehah.finish(msg) async def poke_(bot: Bot, event: Event, state: dict) -> bool: try: return (event.raw_event['sub_type'] == 'poke' and event.raw_event['target_id'] == int(event.self_id) and event.raw_event['notice_type'] == 'notify') except: return False poke = on_notice(rule=check_banlist() & poke_, block=True) poke.handle()(_poke) # 处理 进 / 退 群事件 groupEvent = on_notice() @groupEvent.handle() async def _(bot: Bot, event: Event, state: dict) -> None: if event.raw_event['notice_type'] == 'group_increase': if event.user_id != int(event.self_id): await groupEvent.finish( f'好欸!事新人[CQ:at,qq={event.raw_event["user_id"]}]') elif event.user_id == int(event.self_id): await groupEvent.finish("在下 ATRI,你可以叫我 亚托莉 或 アトリ !~w")
import pytz import asyncio from datetime import datetime from nonebot.plugin import on_notice, on_request from nonebot.adapters.cqhttp import GroupRequestEvent, GroupIncreaseNoticeEvent import salmon from salmon import Bot, configs from salmon.modules.authMS import util from salmon.modules.authMS.constant import config, group_dict, trial_list tz = pytz.timezone('Asia/Shanghai') group_more_request = on_request() group_50_notice = on_notice() @group_more_request.handle() async def handle_group_invite(bot: Bot, event: GroupRequestEvent): ''' 自动处理入群邀请 适用于50人以上的邀请的情况, 50人以下请参见下一条函数 ''' if not config.ENABLE_AUTH: # 配置ENABLE_AUTH为0, 则授权系统不起作用, 不会自动通过加群邀请 return if event.sub_type == 'invite': gid = event.group_id new_group_auth = await util.new_group_check(gid) if event.user_id not in configs.SUPERUSERS: if new_group_auth == 'expired' or new_group_auth == 'no trial': await bot.set_group_add_request(flag=event.flag,
import os from nonebot.plugin import on_notice, on_message, require from nonebot.adapters.cqhttp import GroupRecallNoticeEvent, Bot, Message, FriendRecallNoticeEvent, PokeNotifyEvent, \ MessageEvent, MessageSegment from nonebot.adapters.cqhttp.event import Event, GroupMessageEvent from nonebot.rule import to_me from random import choice, randint poke = on_notice(rule=to_me()) recall = on_notice() flashimg = on_message() help = on_message(rule=to_me()) @poke.handle() async def _(bot: Bot, event: PokeNotifyEvent): # msg = choice([ # "你再戳!", "?再戳试试?", "别戳了别戳了再戳就坏了555", "我爪巴爪巴,球球别再戳了", "你戳你🐎呢?!", # "那...那里...那里不能戳...绝对...", "(。´・ω・)ん?", "有事恁叫我,别天天一个劲戳戳戳!", "欸很烦欸!你戳🔨呢", # "?", "差不多得了😅", "欺负咱这好吗?这不好", "我希望你耗子尾汁" # ]) file = "file:///{0}/src/data/voices/miko-daily-023.mp3".format(os.getcwd()) await poke.finish(MessageSegment.record(file)) @recall.handle() async def _(bot: Bot, event: GroupRecallNoticeEvent): mid = event.message_id meg = await bot.get_msg(message_id=mid) if event.user_id != event.self_id and 'type=flash,' not in meg['message']: re = 'Killer Queen! 第三の爆弾! Bite The Dust!\n{0}刚刚说了:\n' + meg['message']
from nonebot.rule import Rule from nonebot_adapter_gocq.event import GroupBanNoticeEvent from src.common import T_State, BOTNAME from src.common.rules import sv_sw, comman_rule from nonebot_adapter_gocq.bot import Bot async def didiban(bot: Bot, event: GroupBanNoticeEvent, state: T_State): if not isinstance(event, GroupBanNoticeEvent): return False selfinfo = await bot.get_group_member_info(group_id=event.group_id, user_id=event.self_id) if selfinfo[ "role"] == "admin" and event.group_id == 973573381 and event.operator_id == 3548597378: state["uid"] = event.user_id return True antididi = on_notice(rule=Rule(didiban) & sv_sw('抗蒂蒂', '被蒂蒂禁言自动解封', '群专享')) @antididi.handle() async def unban(bot: Bot, event: GroupBanNoticeEvent, state: T_State): try: await bot.set_group_ban(group_id=event.group_id, user_id=state["uid"], duration=0) await antididi.finish('Poor man, 苗苗会拯救不知道有没有罪的你') except: await antididi.finish('要是苗苗有力量的话...就可以拯救你了..岂可修!')