Beispiel #1
0
 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
Beispiel #2
0
        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)
Beispiel #3
0
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":
Beispiel #4
0
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)
Beispiel #5
0
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):
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
    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']))
Beispiel #9
0
        "?", "差不多得了😅", "欺负咱这好吗?这不好", "我希望你耗子尾汁"
    ])

    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")
Beispiel #10
0
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,
Beispiel #11
0
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']
Beispiel #12
0
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('要是苗苗有力量的话...就可以拯救你了..岂可修!')