zhenxun_bot/plugins/nickname.py

176 lines
7.4 KiB
Python
Raw Normal View History

2021-05-20 19:27:31 +08:00
from nonebot import on_command
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, PrivateMessageEvent
from nonebot.rule import to_me
2021-06-30 19:50:55 +08:00
from utils.utils import get_message_text
2021-05-20 19:27:31 +08:00
from models.group_member_info import GroupInfoUser
from models.friend_user import FriendUser
import random
from models.ban_user import BanUser
from services.log import logger
2021-06-15 10:57:08 +08:00
__plugin_name__ = '昵称系统'
__plugin_usage__ = '用法:\n' \
'以后叫我 [名称]\n' \
'真寻我是谁'
2021-05-20 19:27:31 +08:00
nickname = on_command('nickname',
aliases={'以后叫我', '以后请叫我', '称呼我', '以后请称呼我', '以后称呼我', '叫我', '请叫我'},
rule=to_me(), priority=5, block=True)
my_nickname = on_command('my_name', aliases={'我叫什么', '我是谁', '我的名字'}, rule=to_me(), priority=5, block=True)
cancel_nickname = on_command('取消昵称', rule=to_me(), priority=5, block=True)
@nickname.handle()
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
msg = get_message_text(event.json())
if not msg:
await nickname.finish('叫你空白?叫你虚空?叫你无名??', at_sender=True)
if len(msg) > 10:
await nickname.finish('昵称可不能超过10个字', at_sender=True)
if await GroupInfoUser.set_group_member_nickname(event.user_id, event.group_id, msg):
if len(msg) < 5:
if random.random() < 0.5:
msg = "~".join(msg)
await nickname.send(random.choice([
'好啦好啦,我知道啦,{},以后就这么叫你吧',
'嗯嗯,小真寻记住你的昵称了哦,{}',
'好突然,突然要叫你昵称什么的...{}..',
'小真寻会好好记住的{}的,放心吧',
'好..好.,那窝以后就叫你{}了.'
]).format(msg))
logger.info(f'USER {event.user_id} GROUP {event.group_id} 设置群昵称 {msg}')
else:
await nickname.send('设置昵称失败,请更新群组成员信息!', at_sender=True)
logger.warning(f'USER {event.user_id} GROUP {event.group_id} 设置群昵称 {msg} 失败')
@nickname.handle()
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
msg = get_message_text(event.json())
if not msg:
await nickname.finish('叫你空白?叫你虚空?叫你无名??', at_sender=True)
if len(msg) > 10:
await nickname.finish('不要超过10个字', at_sender=True)
if await FriendUser.set_friend_nickname(event.user_id, msg):
await nickname.send(random.choice([
'好啦好啦,我知道啦,{},以后就这么叫你吧',
'嗯嗯,小真寻记住你的昵称了哦,{}',
'好突然,突然要叫你昵称什么的...{}..',
'小真寻会好好记住的{}的,放心吧',
'好..好.,那窝以后就叫你{}了.'
]).format(msg))
logger.info(f'USER {event.user_id} 设置昵称 {msg}')
else:
await nickname.send('设置昵称失败了,明天再来试一试!或联系管理员更新好友!', at_sender=True)
logger.warning(f'USER {event.user_id} 设置昵称 {msg} 失败')
@my_nickname.handle()
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
try:
nickname = await GroupInfoUser.get_group_member_nickname(event.user_id, event.group_id)
except AttributeError:
nickname = ''
if nickname:
await my_nickname.send(random.choice([
'我肯定记得你啊,你是{}',
'我不会忘记你的,你也不要忘记我!{}',
'哼哼,真寻记忆力可是很好的,{}',
'嗯?你是失忆了嘛...{}..',
'不要小看真寻的记忆力啊!笨蛋{}QAQ',
'哎?{}..怎么了吗..突然这样问..'
]).format(nickname))
else:
try:
nickname = (await GroupInfoUser.select_member_info(event.user_id, event.group_id)).user_name
except AttributeError:
nickname = event.user_id
await my_nickname.finish(random.choice([
'对不起,我只记得一串神秘代码..{}\n【群管理快更新群组成员信息!】'
]).format(nickname))
await my_nickname.send(random.choice([
'没..没有昵称嘛,{}',
'啊,你是{}啊,我想叫你的昵称!',
'{}啊,有什么事吗?',
'你是{}'
]).format(nickname))
@my_nickname.handle()
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
nickname = await FriendUser.get_friend_nickname(event.user_id)
if nickname:
await my_nickname.send(random.choice([
'我肯定记得你啊,你是{}',
'我不会忘记你的,你也不要忘记我!{}',
'哼哼,真寻记忆力可是很好的,{}',
'嗯?你是失忆了嘛...{}..',
'不要小看真寻的记忆力啊!笨蛋{}QAQ',
'哎?{}..怎么了吗..突然这样问..'
]).format(nickname))
else:
nickname = await FriendUser.get_user_name(event.user_id)
if nickname:
await my_nickname.send(random.choice([
'没..没有昵称嘛,{}',
'啊,你是{}啊,我想叫你的昵称!',
'{}啊,有什么事吗?',
'你是{}'
]).format(nickname))
else:
nickname = event.user_id
await my_nickname.finish(random.choice([
'对不起,我只记得一串神秘代码..{}\n【火速联系管理员更新好友列表!】'
]).format(nickname))
@cancel_nickname.handle()
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
nickname = await GroupInfoUser.get_group_member_nickname(event.user_id, event.group_id)
if nickname:
await cancel_nickname.send(random.choice([
'呜..真寻睡一觉就会忘记的..和梦一样..{}',
'窝知道了..{}..',
'是真寻哪里做的不好嘛..好吧..晚安{}',
'呃,{},下次我绝对绝对绝对不会再忘记你!',
'可..可恶!{}!太可恶了!呜'
]).format(nickname))
await GroupInfoUser.set_group_member_nickname(event.user_id, event.group_id, '')
await BanUser.ban(event.user_id, 9, 60)
else:
await cancel_nickname.send('你在做梦吗?你没有昵称啊', at_sender=True)
@cancel_nickname.handle()
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
nickname = await FriendUser.get_user_name(event.user_id)
if nickname:
await cancel_nickname.send(random.choice([
'呜..真寻睡一觉就会忘记的..和梦一样..{}',
'窝知道了..{}..',
'是真寻哪里做的不好嘛..好吧..晚安{}',
'呃,{},下次我绝对绝对绝对不会再忘记你!',
'可..可恶!{}!太可恶了!呜'
]).format(nickname))
await FriendUser.get_user_name(event.user_id)
await BanUser.ban(event.user_id, 9, 60)
else:
await cancel_nickname.send('你在做梦吗?你没有昵称啊', at_sender=True)