Add files via upload

This commit is contained in:
HibiKier 2021-05-20 20:13:49 +08:00 committed by GitHub
parent 621dcaa69f
commit 6cb95fd6b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 170 additions and 0 deletions

27
plugins/admin_config.py Normal file
View File

@ -0,0 +1,27 @@
from nonebot import on_notice
from services.log import logger
from nonebot.adapters.cqhttp import Bot, GroupAdminNoticeEvent
from nonebot.typing import T_State
from models.level_user import LevelUser
from models.group_member_info import GroupInfoUser
from configs.config import ADMIN_DEFAULT_AUTH
admin_notice = on_notice(priority=5)
@admin_notice.handle()
async def _(bot: Bot, event: GroupAdminNoticeEvent, state: T_State):
try:
nickname = (await GroupInfoUser.select_member_info(event.user_id, event.group_id)).user_name
except AttributeError:
nickname = event.user_id
if event.sub_type == 'set':
await LevelUser.set_level(event.user_id, event.group_id, ADMIN_DEFAULT_AUTH)
logger.info(f'为新晋管理员 {nickname}({event.user_id}) 添加权限等级:{ADMIN_DEFAULT_AUTH}')
if event.sub_type == 'unset':
await LevelUser.delete_level(event.user_id, event.group_id)
logger.info(f'将非管理员 {nickname}({event.user_id}) 取消权限等级')

55
plugins/fake_msg.py Normal file
View File

@ -0,0 +1,55 @@
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent
from nonebot import on_command
from util.utils import get_message_imgs, get_message_text
from util.init_result import share
from services.log import logger
__plugin_usage__ = '用法:\n格式:网址 标题 内容(可省略) 图片(可省略)\n示例:假消息 www.4399.com 我喜欢萝莉 为什么我喜欢... (图片)'
fake_msg = on_command('假消息', priority=5, block=True)
@fake_msg.handle()
async def _(bot: Bot, event: MessageEvent, state: T_State):
msg = get_message_text(event.json()).split(' ')
img = get_message_imgs(event.json())
if not msg or msg in ['帮助']:
await fake_msg.finish(__plugin_usage__)
if len(msg) > 1:
if len(msg) == 2:
url = msg[0]
title = msg[1]
content = ''
else:
url = msg[0]
title = msg[1]
content = msg[2]
if img:
img = img[0]
else:
img = ''
if url.find('http://') == -1:
url = 'http://' + url
await fake_msg.send(share(url, title, content, img))
logger.info(
f"(USER {event.user_id}, GROUP {event.group_id if event.message_type != 'private' else 'private'})"
f" 构造假消息 url {url} title {title} content {content}")
else:
await fake_msg.finish('消息格式错误:\n网址 标题 内容(可省略) 图片(可省略)')

88
plugins/fudu.py Normal file
View File

@ -0,0 +1,88 @@
from nonebot.adapters.cqhttp.permission import GROUP
from configs.path_config import IMAGE_PATH
from util.img_utils import get_img_hash
import random
from util.init_result import image
from nonebot import on_message
from util.utils import get_message_text, get_message_imgs, get_local_proxy
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
import aiohttp
import aiofiles
from collections import defaultdict
from configs.config import FUDU_PROBABILITY
class Fudu:
def __init__(self):
self.mlist = defaultdict(list)
def append(self, key, content):
self.mlist[key].append(content)
def clear(self, key):
self.mlist[key] = []
def size(self, key) -> int:
return len(self.mlist[key])
def check(self, key, content) -> bool:
return self.mlist[key][0] == content
def get(self, key):
return self.mlist[key][0]
_fudulist = Fudu()
fudu = on_message(permission=GROUP, priority=9)
@fudu.handle()
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
if event.is_tome() or state["_prefix"]["raw_command"]:
return
if get_message_text(event.json()):
if get_message_text(event.json()).find('@可爱的小真寻') != -1:
await fudu.finish('复制粘贴的虚空艾特?', at_sender=True)
imgs = get_message_imgs(event.json())
msg = get_message_text(event.json())
if not imgs and not msg:
return
if imgs:
img_hash = await get_fudu_img_hash(imgs[0], event.group_id)
else:
img_hash = ''
add_msg = msg + '|-|' + img_hash
if _fudulist.size(event.group_id) == 0:
_fudulist.append(event.group_id, add_msg)
elif _fudulist.check(event.group_id, add_msg):
_fudulist.append(event.group_id, add_msg)
else:
_fudulist.clear(event.group_id)
_fudulist.append(event.group_id, add_msg)
if _fudulist.size(event.group_id) > 2:
if random.random() < FUDU_PROBABILITY:
if random.random() < 0.2:
await fudu.finish("打断施法!")
if imgs and msg:
rst = msg + image(f'compare_{event.group_id}_img.jpg', 'temp')
elif imgs:
rst = image(f'compare_{event.group_id}_img.jpg', 'temp')
elif msg:
rst = msg
else:
rst = ''
if rst:
await fudu.send(rst)
_fudulist.clear(event.group_id)
async def get_fudu_img_hash(url, group_id):
async with aiohttp.ClientSession() as session:
async with session.get(url, proxy=get_local_proxy(), timeout=5) as response:
async with aiofiles.open(IMAGE_PATH + f"temp/compare_{group_id}_img.jpg", 'wb') as f:
await f.write(await response.read())
img_hash = get_img_hash(IMAGE_PATH + f"temp/compare_{group_id}_img.jpg")
return str(img_hash)