Beispiel #1
0
 def on_message(self,  only_to_me: bool = False, only_group: bool = True, **kwargs) -> "matcher_wrapper":
     rule = self.check_service(only_to_me, only_group)
     kwargs['rule'] = rule
     priority = kwargs.get('priority', 1)
     mw = matcher_wrapper(self,
                          'Message.message', priority, only_group=only_group)
     self.matchers.append(str(mw))
     mw.load_matcher(on_message(**kwargs))
     _loaded_matchers[mw.matcher] = mw
     return mw
Beispiel #2
0
 def on_rex(self, pattern: str, flags: Union[int, re.RegexFlag] = 0, normal: bool = True, only_to_me: bool = False, only_group: bool = True, **kwargs) -> "matcher_wrapper":
     rule = self.check_service(only_to_me, only_group)
     rule = regex(pattern, flags, normal) & rule
     priority = kwargs.get('priority', 1)
     mw = matcher_wrapper(self,
                          'Message.regex', priority, pattern=str(pattern), flags=str(flags), only_group=only_group)
     self.matchers.append(str(mw))
     mw.load_matcher(on_message(rule, **kwargs))
     _loaded_matchers[mw.matcher] = mw
     return mw
Beispiel #3
0
 def on_keyword(self, keywords: Iterable, normal: bool = True, only_to_me: bool = False, only_group: bool = True, **kwargs) -> "matcher_wrapper":
     if isinstance(keywords, str):
         keywords = set([keywords])
     elif not isinstance(keywords, set):
         if keywords:
             keywords = set([keywords]) if len(
                 keywords) == 1 and isinstance(keywords, tuple) else set(keywords)
         else:
             keywords = set()
     rule = self.check_service(only_to_me, only_group)
     kwargs['rule'] = keyword(*keywords, normal=normal) & rule
     priority = kwargs.get('priority', 1)
     mw = matcher_wrapper(self,
                          'Message.keyword', priority, keywords=str(keywords), only_group=only_group)
     mw.load_matcher(on_message(**kwargs))
     self.matchers.append(str(mw))
     _loaded_matchers[mw.matcher] = mw
     return mw
Beispiel #4
0
        text = '你是傻逼'
    else:
        text = '我是你爹'
        await bot.send(event, text, at_sender=True)


command_test = on_keyword({str}, rule=to_me())


@command_test.handle()
async def _echo(bot: Bot, event: MessageEvent):
    text = str + '是我爹'
    await bot.send(event, text, at_sender=True)


command_test = on_message(rule=to_me(), priority=10)


@command_test.handle()
async def _echo(bot: Bot, event: MessageEvent):
    if event.message_type == 'group' and event.get_plaintext() == '':
        text = '没事@你爹干嘛呢'
        await bot.send(event, text, at_sender=True)


command = on_message(rule=to_me(), priority=5, block=False)


@command.handle()
async def _echo(bot: Bot, event: MessageEvent):
    if event.get_plaintext() != '':
Beispiel #5
0
"""
    TextAppraisal包含的功能:
    1.初步鉴定消息是否为文字
    2.发现违规立即上报
    3.正则匹配URL
"""
from costrule import check_white_list_group
import re
from datetime import datetime
from nonebot.adapters.cqhttp import Bot
from nonebot.adapters.cqhttp.event import GroupMessageEvent
from nonebot.adapters.cqhttp.message import Message
from nonebot.plugin import on_message
from config import AdminList_REPORT

get_text = on_message(priority=5, rule=check_white_list_group())


@get_text.handle()
async def _get_text(bot: Bot, event: GroupMessageEvent):
    async def report():
        time = datetime.now()
        msg = Message(
            f"[CQ:at,qq={event.user_id}]喂,你看看你发的什么消息啊kora!"
        )
        msg_master = (
            '上报链接消息!!!\n'
            f'MessageID:{event.message_id}\n'
            f'Sender:{event.sender.nickname}({event.user_id})\n'
            f'Time:{time}'
        )
Beispiel #6
0
except ImportError:
    import json
from loguru import logger
from nonebot.adapters import Bot, Event
from nonebot.adapters.cqhttp.message import Message, MessageSegment
from nonebot.typing import T_State
from nonebot.exception import ActionFailed

config = nonebot.get_driver().config
app_id = str(config.tencent_app_id)
app_key = config.tencent_app_key

cq_code_pattern = re.compile(r'\[CQ:\w+,.+\]')
salt = None

chat = on_message(priority=5, block=True)


def getReqSign(params: dict) -> str:
    hashed_str = ''
    for key in sorted(params):
        hashed_str += key + '=' + quote_plus(params[key]) + '&'
    hashed_str += 'app_key=' + app_key
    sign = md5(hashed_str.encode())
    return sign.hexdigest().upper()


def rand_string(n=8):
    return ''.join(
        random.choice(string.ascii_uppercase + string.digits)
        for _ in range(n))
Beispiel #7
0
from nonebot.plugin import on, on_message, on_command

command = on_command("log", priority=1)
logger = on_message(priority=1, block=False)
logger_ = on("message_sent", priority=1, block=False)
Beispiel #8
0
import nonebot
from nonebot.plugin import on_message, on_command
from nonebot.rule import to_me, Rule
from nonebot.typing import T_State
from nonebot.adapters.mirai import Bot, Event, MessageSegment

from .config import Config

global_config = nonebot.get_driver().config
plugin_config = Config(**global_config.dict())

manual = on_message(rule=to_me(), priority=99)
help = on_command('help', priority=98)


@manual.handle()
async def manual_handle(bot: Bot, event: Event, state: T_State):
    await manual.finish(plugin_config.about)


@help.handle()
async def help_handle(bot: Bot, event: Event, state: T_State):
    args = str(event.get_message()).strip()
    if args == "r":
        await help.finish(plugin_config.help_r)
    elif args == "check":
        await help.finish(plugin_config.help_check)
    elif args == "choose":
        await help.finish(plugin_config.help_choose)
    elif args == "daily":
        await help.finish(plugin_config.help_daily)
Beispiel #9
0
    try:
        if pic != None:
            await setu.send(pic)
    except:
        await setu.send("呀,发送失败辣,。,")


act = on_command("act", priority=1)


@act.handle()
async def firsthandle(bot: Bot, event: Event, state: dict):
    await act.finish(unescape(cq.image("activity.jpg")))


stCome = on_message(rule=ckimg("b407f708a2c6a506342098df7cac4a57.image"))


@stCome.handle()
async def pre(bot: Bot, event: Event, state: dict):
    if event.detail_type == "group":
        safe = await cksafe(event.group_id)
    else:
        safe = False
    x, err = await getSetuHigh(bot, not safe)
    if x == None:
        await stCome.finish(err)
    try:
        await stCome.send(unescape(x))
    except:
        await stCome.send("呀,发送失败辣,。,")
Beispiel #10
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from nonebot.typing import Event
from nonebot.plugin import on_message
from nonebot.adapters.cqhttp import Bot

test_message = on_message(state={"default": 1})


@test_message.handle()
async def test_handler(bot: Bot, event: Event, state: dict):
    print("[*] Test Matcher Received:", event)
    state["event"] = event
    await bot.send_private_msg(message="Received", user_id=event.user_id)


@test_message.receive()
async def test_receive(bot: Bot, event: Event, state: dict):
    print("[*] Test Matcher Received next time:", event)
    print("[*] Current State:", state)
Beispiel #11
0
from costrule import check_white_list_all, check_white_list_group, only_master
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:
Beispiel #12
0
                           f'DatabaseError: {e.message}\n{SORRY}\n※请及时联系维护组',
                           at_sender=True)
        except ClanBattleError as e:
            await bot.send(event, e.message, at_sender=True)
        except Exception as e:
            logger.exception(e)
            logger.error(
                f'{type(e)} occured when {func.__name__} handling message {event.message_id}.'
            )
            await bot.send(event,
                           f'Error: 机器人出现未预料的错误\n{SORRY}\n※请及时联系维护组',
                           at_sender=True)


sv_message = on_message(permission=MESSAGE,
                        block=False,
                        handlers=[_clanbattle_bus])


def cb_cmd(name, parser: ArgParser) -> Callable:
    if isinstance(name, str):
        name = (name, )
    if not isinstance(name, Iterable):
        raise ValueError('`name` of cb_cmd must be `str` or `Iterable[str]`')
    names = map(lambda x: helper.normalize_str(x), name)

    def deco(func) -> Callable:
        for n in names:
            if n in _registry:
                logger.warning(
                    f'出现重名命令:{func.__name__} 与 {_registry[n].__name__}命令名冲突')
Beispiel #13
0
from ATRI.utils.utils_times import countX
from ATRI.utils.utils_yml import load_yaml
from ATRI.utils.utils_ban import ban, unban
from ATRI.utils.utils_error import errorRepo
from ATRI.utils.utils_textcheck import Textcheck
from ATRI.utils.utils_history import saveMessage
from ATRI.utils.utils_request import request_api_text
from ATRI.utils.utils_rule import check_banlist, check_switch

CONFIG_PATH = Path('.') / 'config.yml'
config = load_yaml(CONFIG_PATH)['bot']

master = config['superusers']

# 收集 bot 所在群的聊天记录
MessageSave = on_message()


@MessageSave.handle()
async def _(bot: Bot, event: Event, state: dict) -> None:
    user = str(event.user_id)
    group = str(event.group_id)
    message = str(event.message)
    message_id = str(event.id)

    if group == "None":
        saveMessage(message_id, message, user)
    else:
        saveMessage(message_id, message, user, group)

    logger.opt(colors=True).info(
Beispiel #14
0
from ATRI.utils.utils_times import countX
from ATRI.utils.utils_rule import check_banlist
from ATRI.utils.utils_request import request_get
from .data_source import dec

BILI_REPORT_FORMAT = """[{aid}] Info:
Title: {title}
bid: {bid}
Viev: {view} Like: {like}
Coin: {coin} Share: {share}
Link:
{aid_link}
{bid_link}"""

bilibiliRich = on_message(rule=check_banlist())
b_list = []


@bilibiliRich.handle()
async def _(bot: Bot, event: Event, state: dict) -> None:
    global b_list
    user = event.user_id
    msg = str(event.message)

    # 防刷屏机制:回复次数达到五次自动忽略下一次
    if countX(b_list, user) == 5:
        return

    if "qqdocurl" not in msg:
        try:
Beispiel #15
0
import json
from config import masterList
from costrule import check_white_list_all, only_master
from nonebot import on_command
from nonebot.adapters.cqhttp import Bot, Event
from nonebot.adapters.cqhttp.message import Message
from nonebot.adapters.cqhttp.event import PrivateMessageEvent
from nonebot.plugin import on_message
from nonebot.typing import T_State
from PIL import Image, ImageDraw, ImageFont

study = on_command("study", priority=5,
                   rule=check_white_list_all())  # 定义study命令
lib_manage = on_command('lib_manage', priority=5,
                        rule=only_master())  # 定义查询与删除
get_march = on_message(rule=check_white_list_all(), priority=5)
StudyPath = os.path.join(os.getcwd(), 'DataBase', 'Json', 'studylib.json')

with open(StudyPath, 'r', encoding="utf-8") as fr:
    studylib = json.load(fr)


@study.handle()  # study写入,需二次确认[private]
async def handle_study(bot: Bot, event: Event, state: T_State):
    arg = str(event.get_message()).split()
    """
        study写入传参 #study module(str) key(str) value(str)        至于<similar(int)>就先咕咕咕吧(别打我)
        这次用dict写,可以用更多的符号
    """
    if len(arg) != 3:
        await study.finish('[传参错误]:参数数量不足或过多')
Beispiel #16
0

def isPixivURL() -> Rule:
    async def isPixivURL_(bot: "Bot", event: "Event", state: T_State) -> bool:
        if event.get_type() != "message":
            return False
        msg = str(event.get_message())
        if re.findall("https://www.pixiv.net/artworks/(\d+)|illust_id=(\d+)",
                      msg):
            return True
        return False

    return Rule(isPixivURL_)


pixivURL = on_message(rule=isPixivURL())


@pixivURL.handle()
async def pixivURL(bot: Bot, event: Event, state: dict):
    pid = re.findall("https://www.pixiv.net/artworks/(\d+)|illust_id=(\d+)",
                     str(event.get_message()))
    if pid:
        pid = [x for x in pid[0] if x][0]
        await send(pid, event, bot)


# pixiv = on_command(cmd="pixiv")
pixiv = on_regex(pattern="^pixiv\ ")

# 识别参数 并且给state 赋值
Beispiel #17
0
    async def bool_recall_rep(bot: "Bot", event: "Event",
                              state: T_State) -> bool:
        if not event.is_tome():
            return False
        if event.get_type() != "message":
            return False

        msg_dict = event.dict()
        msg_id = msg_dict['raw_message']
        id = re.findall('\[CQ\:reply\,id\=(-{0,1}\d+)\]', msg_id)
        if id:
            state["id"] = id[0]
            msgg = msg_id.split(" ")[-1]
            if msgg == "撤回":
                return True
        return False

    return Rule(bool_recall_rep)


recall_rep = on_message(rule=test())


@recall_rep.handle()
async def recall_rep(bot: Bot, event: Event, state: dict):
    msg_id = state['id']
    try:
        await bot.delete_msg(message_id=msg_id, self_id=bot.self_id)
    except:
        await bot.send(message="撤回失败")
Beispiel #18
0

pic_map: Dict[str, str] = {}  # 保存这个群的上一张色图 {"123456":"http://xxx"}


async def check_pic(bot: Bot, event: MessageEvent, state: T_State) -> bool:
    if isinstance(event, MessageEvent):
        for msg in event.message:
            if msg.type == "image":
                url: str = msg.data["url"]
                state["url"] = url
                return True
        return False


notice_pic = on_message(check_pic)


@notice_pic.handle()
async def handle_pic(bot: Bot, event: GroupMessageEvent, state: T_State):
    try:
        group_id: str = str(event.group_id)
        pic_map.update({group_id: state["url"]})
    except AttributeError:
        pass


previous = on_command("上一张图是什么", aliases={"上一张", "这是什么"})


@previous.handle()
from nonebot.adapters.cqhttp import Bot
from nonebot.adapters.cqhttp.event import Event, GroupMessageEvent, PrivateMessageEvent
from nonebot.adapters.cqhttp.message import Message
from nonebot.plugin import on_message, require
global conclution, picture_lib, check_api
conclution, check_api = '', True
PicPath = os.path.join(os.getcwd(), 'DataBase', 'Json', 'picture_lib.json')

try:
    with open(PicPath, 'r', encoding="utf-8") as fr:
        picture_lib = json.load(fr)
except:
    picture_lib = {}

scheduler = require('nonebot_plugin_apscheduler').scheduler  # 定义计划任务
repire_lib = on_message(priority=5, rule=only_reply())
get_pic = on_message(priority=5, rule=check_white_list_group())


@scheduler.scheduled_job('cron', day='1')  # 每月一日重获tocken
async def _get_token():
    async with AsyncClient() as Client:
        host = 'https://aip.baidubce.com/oauth/2.0/token'
        PostData = {
            'grant_type': 'client_credentials',
            'client_id': baidu_client_id,
            'client_secret': baidu_client_secret
        }
        get_data = await Client.post(host, data=PostData)
        result = get_data.json()
    access_token = result['access_token']
    5.多图连搜
"""
import re
import os
from nonebot.adapters.cqhttp import Bot
from nonebot.adapters.cqhttp.event import (Event, GroupMessageEvent,
                                           PrivateMessageEvent)
from nonebot.adapters.cqhttp.message import Message
from nonebot.plugin import on_message
from costrule import check_white_list_all, only_reply
from httpx import AsyncClient
from config import SauceNAO_api

api_key = SauceNAO_api
Reply_SearchPic = on_message(priority=5,
                             rule=only_reply() & check_white_list_all(),
                             block=True)


@Reply_SearchPic.handle()
async def _Reply_SearchPic(bot: Bot, event: Event):
    send_except_msg = (Message(
        f"[CQ:at,qq={event.get_user_id()}]你确定你给我的是一张图片?\n"
        "若持续出此报错,请按照以下步骤搜图:\n"
        '1.将图片逐张转发至Senrin\n'
        '2.回复需要搜索的图片并附上“搜图”'))
    if '搜图' in str(event.get_message()):
        search_list = []
        result_list = []
        send_msg_result = '搜图结果如下:\n'
        for _msg in event.reply.message:  # type:ignore    初步处理数据
Beispiel #21
0
from nonebot.typing import T_State

from nonebot.adapters.cqhttp import Bot, Event

from .config import Config

global_config = get_driver().config
config = Config(**global_config.dict())
# Export something for other plugin
# export = nonebot.export()
# export.foo = "bar"

# @export.xxx
# def some_function():
#     pass
repeat_after_me = on_message(priority=10)


@repeat_after_me.handle()
async def _(bot: Bot, event: Event, state: T_State):
    # 开关检测,开则复述
    message = event.get_message()
    message_type = str(event.dict()["message_type"])
    # 来源判断
    if message_type == "group":
        id = str(event.dict()["group_id"])
        # message_type = "on_group"
        switch = (Path(".") / "apeiria_network" / "config" / "repeat" /
                  "group" / "switch.json")
        re = Path(
            "."
Beispiel #22
0
from nonebot_adapter_gocq.exception import ActionFailed

from src.common import Bot, MessageEvent, logger, BOTNAME, MessageSegment, RESPATH
from src.common.rules import sv_sw, full_match
from src.common.levelsystem import UserLevel, is_user, filter_users
from src.utils import imgseg, DailyNumberLimiter
from .ballot_fortune import query_fortune, draw_fortune, get_active_user

plugin_name = '运势'
plugin_usage = """[今日运势] 没日一抽,运气好的话当天可能出门被撞到异世界当美少女"""

assets_folder = Path(RESPATH) / 'fortune'
sticks = [i for i in assets_folder.glob('*.[jp][pn]*g')]

fortune = on_message(rule=sv_sw(plugin_name, plugin_usage) & full_match(
    ('运势', '今日运势')),
                     priority=2)


@fortune.handle()
async def check_fortune(bot: Bot, event: MessageEvent):
    name = event.sender.card if event.message_type == 'group' else event.sender.nickname
    dlmt = DailyNumberLimiter(event.user_id, func_name='运势', max_num=1)
    stick = query_fortune(event.user_id)
    rp = 0  # 如果抽中了特殊的签要发生一些事件 TODO:加入一些今天功能冷却减少之类的什么奖励吧
    if dlmt.check(close_conn=False) or not stick:
        stick = choice(sticks)
        if dlmt.count == 0:
            if stick.name == '28.jpg':  # 恋爱运,惩罚
                rp = 1
            elif stick.name == '27.jpg':  # 凶,奖励
Beispiel #23
0
        repeat_data = ujson.load(f)


# 保存单个记录
@dataclass
class Record:
    last_msg: str
    last_user_id: str
    repeat_count: int = 0


# 存储各个群的复读记录
records: Dict[str, Record] = {}

# 复读!学大家说话!优先级最低
repeater = on_message(rule=is_banned(), priority=10)


@repeater.handle()
async def _(bot: Bot, event: Event, state: dict):
    msg = str(event.message)
    logger.info(msg)
    user_id = str(event.user_id)
    group = str(event.group_id)

    if group not in records:
        rec = Record(msg, user_id, 1)
        records[group] = rec
        return

    rec = records.get(group)
Beispiel #24
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 #25
0
                if sv_on:
                    sv_ls += "已开启 ✓" + '\n' + '\n'.join(map(diver_name, sv_on))
                if sv_off:
                    if sv_on:
                        sv_ls += "\n———————\n"
                    sv_ls += "已关闭 ✗" + '\n' + '\n'.join(map(diver_name, sv_off))
            else:
                sv_ls = '\n'.join(map(diver_name, sub_usage))

            usage += '发送[使用帮助 功能名]查看以下子功能说明\n———————\n' + sv_ls
        if not usage:
            usage = '此功能还未添加描述'
        await helper.finish(f">——<{name}>——<\n{usage}")


about_bot = on_message(rule=full_match("关于Sanae-Bot"))


@about_bot.handle()
async def show_info(bot: Bot, event: MessageEvent):
    # TODO: 完善信息
    if UserLevel(event.user_id).level > 3:
        frcode = get_hash_code(FRIENDREQUESTCODESALT, event.user_id)
    else:
        frcode = '<->'
    msg = link_res('sanae-bot.gif') + f'\nversion-{BOT_VERSION}\n'
    if event.message_type == 'group':
        msg += f'本群授权时间:<->\n本群授权期至:<->\n'
    msg += f'您的好友申请码:{frcode}' + '\n测试、反馈、交流群:708242151'
    await about_bot.finish(msg)
Beispiel #26
0
async def _(bot: Bot, event: Event, state: dict) -> None:
    img = state["img_url"]
    img = re.findall(r"(http://.*?)]", img)

    if len(img):
        pass
    else:
        await SaucenaoSearch.reject("请发送一张目标图片,而非文字或其他非图片成分( -'`-; )")

    await bot.send(event, "别急!正在找图!")

    await SaucenaoSearch.finish(resultRepo(state['user'], key_SauceNAO,
                                           img[0]))


SaucenaoSearch_repo = on_message(rule=check_banlist()
                                 & check_switch(plugin_name_0, True))


@SaucenaoSearch_repo.handle()
async def _(bot: Bot, event: Event, state: dict) -> None:
    group = str(event.group_id)
    msg = str(event.message)

    if "[CQ:reply" in msg:
        if "搜图" in msg or "识图" in msg:
            if group == "None":
                await SaucenaoSearch_repo.finish("ごめんなさい...\n该功能只对群聊开放哦~~")

            try:
                repo_info = re.findall(r"CQ:reply,id=([0-9]\S+)]", msg)
                msg_id = repo_info[0]
Beispiel #27
0
        raise IgnoredException('该群已在全局关闭服务')

    if event.get_type() in ('message', 'notice',
                            'request') and not User_Blocker(
                                event.user_id).check_block():
        raise IgnoredException('该用户在阻塞列表中')

    # if isinstance(event, PrivateMessageEvent) and event.user_id == event.self_id:
    #     raise IgnoredException('由于当前版本gocq客户端的上报消息类型错误问题必须阻断的事件')
    # data = {}
    # for p in filter(lambda x: not (x.startswith('__') and x.endswith('__')), dir(event)):
    #     data[p] = getattr(event, p)
    # event = PrivateMessageSentEvent(**data)


connection_report = on_message(rule=full_match('status'), permission=SUPERUSER)


@connection_report.handle()
async def report_status(bot: Bot):
    bots_dict = get_bots()
    msg = f'{len(bots_dict)} connection(s):\n' + '\n'.join(
        [q for q in bots_dict])
    await connection_report.send(msg)


# store all subplugins
manager_plugins = set()
# load sub plugins
manager_plugins |= load_plugins(
    str((Path(__file__).parent / "plugins").resolve()))
Beispiel #28
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from nonebot.rule import to_me
from nonebot.typing import Event
from nonebot.plugin import on_message
from nonebot.adapters.cqhttp import Bot

test_message = on_message(to_me(), state={"default": 1})


@test_message.handle()
async def test_handler(bot: Bot, event: Event, state: dict):
    print("[*] Test Matcher Received:", event)
    state["event"] = event
    await bot.send(message="Received", event=event)


@test_message.receive()
async def test_receive(bot: Bot, event: Event, state: dict):
    print("[*] Test Matcher Received next time:", event)
    print("[*] Current State:", state)