#!/usr/bin/env python3 # -*- encoding: utf-8 -*- ''' @File : __init__.py @Time : 2020/11/07 14:24:57 @Author : Kyomotoi @Contact : kyomotoiowo@gmail.com @Github : https://github.com/Kyomotoi @License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved. ''' __author__ = 'kyomotoi' import json from pathlib import Path from random import choice from requests import exceptions 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_message, on_notice from utils.utils_times import countX from utils.utils_yml import load_yaml from utils.utils_error import errorRepo from utils.utils_rule import check_banlist from utils.utils_history import saveMessage from utils.utils_request import request_api_text CONFIG_PATH = Path('.') / 'config.yml' config = load_yaml(CONFIG_PATH)['bot'] # 收集 bot 所在群的聊天记录 MessageSave = on_message() @MessageSave.handle() # type: ignore 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( f"[<yellow>{group}</yellow>]-U: (<blue>{user}</blue>) | Message: (<green>{message}</green>) Saved successfully" ) # Call bot callMe = on_message(rule=check_banlist()) @callMe.handle() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: msg = str(event.message) if msg in config['nickname']: await callMe.finish("叫咱有啥事吗w") elif "萝卜子" in msg: await bot.send(event, "萝卜子是对咱的蔑称!!") else: pass # 戳 一 戳 pokehah = on_command("戳一戳", rule=to_me() & check_banlist()) @pokehah.handle() # type: ignore async def _poke(bot: Bot, event: Event, state: dict) -> None: msg = choice([ "你再戳!", "?再戳试试?", "别戳了别戳了再戳就坏了555", "我爪巴爪巴,球球别再戳了", "你戳你🐎呢?!", "那...那里...那里不能戳...绝对...", "(。´・ω・)ん?", "有事恁叫我,别天天一个劲戳戳戳!", "欸很烦欸!你戳🔨呢", "?" ]) await pokehah.finish(msg) async def poke_(bot: Bot, event: Event, state: dict) -> bool: return (event.detail_type == "notify" and event.raw_event["sub_type"] == "poke" # type: ignore and event.sub_type == "notice" and int( event.self_id) == event.raw_event["target_id"] # type: ignore ) poke = on_notice(poke_, block=True) poke.handle()(_poke) # 处理 进 / 退 群事件 groupEvent = on_notice(rule=check_banlist()) @groupEvent.handle() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: if event.raw_event["notice_type"] == "group_increase": # type: ignore await groupEvent.finish( f'好欸!事新人[CQ:at,qq={event.raw_event["user_id"]}]' # type: ignore ) # type: ignore await groupEvent.finish("在下 ATRI,你可以叫我 亚托莉 或 アトリ !~w") elif event.raw_event[ # type: ignore "notice_type"] == "group_decrease": await groupEvent.finish( f'[{event.raw_event["operator_id"]}] 离开了我们...' # type: ignore ) # # 舆情监听系统 # listenPublicOpinion = on_message() # file_PO = Path( # '.') / 'ATRI' / 'plugins' / 'plugin_chat' / 'public_opinion.json' # @groupEvent.handle() # type: ignore # async def _(bot: Bot, event: Event, state: dict) -> None: # with open(file_PO, 'r') as f: # data = json.load(f) # 口臭一下 fxxkMe = on_command('口臭一下', aliases={'口臭', '骂我'}, rule=to_me() & check_banlist()) list_M = [] @fxxkMe.handle() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: user = str(event.user_id) global list_M if countX(list_M, user) >= 3: await fxxkMe.finish("不是??你这么想被咱骂的嘛??被咱骂就这么舒服的吗?!该......你该不会是.....M吧!") elif countX(list_M, user) >= 6: await fxxkMe.finish("给我适可而止阿!?") list_M = list(set(list_M)) else: list_M.append(user) URL = "https://nmsl.shadiao.app/api.php?level=min&lang=zh_cn" msg = "" try: msg = request_api_text(URL) except exceptions: await fxxkMe.finish(errorRepo("请求错误")) await fxxkMe.finish(msg) # Hitokoto hitokoto = on_command('一言', aliases={'抑郁一下', '网抑云'}, rule=to_me() & check_banlist()) list_Y = [] @hitokoto.handle() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: user = str(event.user_id) global list_Y if countX(list_Y, user) >= 3: await hitokoto.finish("额......需要咱安慰一下嘛~?") elif countX(list_Y, user) >= 6: await hitokoto.finish("如果心里感到难受就赶快去睡觉奥!别再憋自己了!") list_Y = list(set(list_Y)) else: list_Y.append(user) URL = "https://api.imjad.cn/hitokoto/?cat=a&charset=utf-8&length=50&encode=json&fun=sync&source=" info = {} try: info = json.loads(request_api_text(URL)) except: await hitokoto.finish(errorRepo("请求错误")) await hitokoto.finish(info["hitokoto"])