mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
Add files via upload
This commit is contained in:
parent
621dcaa69f
commit
6cb95fd6b6
27
plugins/admin_config.py
Normal file
27
plugins/admin_config.py
Normal 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
55
plugins/fake_msg.py
Normal 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
88
plugins/fudu.py
Normal 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)
|
||||
Loading…
Reference in New Issue
Block a user