mirror of
https://github.com/xuthus83/LittlePaimon.git
synced 2025-04-12 23:29:37 +08:00
优化项目结构,派蒙聊天默认关闭
This commit is contained in:
parent
da334ddda2
commit
8d92fbb1b2
44
Paimon_Chat/__init__.py
Normal file
44
Paimon_Chat/__init__.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
from nonebot import on_regex, logger
|
||||||
|
from nonebot.exception import FinishedException
|
||||||
|
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageSegment
|
||||||
|
from ..utils.util import FreqLimiter2
|
||||||
|
from ..utils.config import config
|
||||||
|
from .chat_list import chat_list
|
||||||
|
from pathlib import Path
|
||||||
|
import random
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
res_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'res', 'voice')
|
||||||
|
chat_lmt = FreqLimiter2(60)
|
||||||
|
|
||||||
|
|
||||||
|
def create_matcher(chat_word: str, pattern: str, cooldown: int, pro: float, responses):
|
||||||
|
hammer = on_regex(pattern, priority=10)
|
||||||
|
|
||||||
|
@hammer.handle()
|
||||||
|
async def handler(event: GroupMessageEvent):
|
||||||
|
if event.group_id not in config.paimon_chat_group:
|
||||||
|
return
|
||||||
|
if not chat_lmt.check(event.group_id, chat_word):
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
if not random.random() < pro:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
chat_lmt.start_cd(event.group_id, chat_word, cooldown)
|
||||||
|
response = random.choice(responses)
|
||||||
|
if '.mp3' not in response:
|
||||||
|
await hammer.finish(response)
|
||||||
|
else:
|
||||||
|
await hammer.finish(MessageSegment.record(file=Path(os.path.join(res_path, response))))
|
||||||
|
except FinishedException:
|
||||||
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
logger.error('派蒙发送语音失败', e)
|
||||||
|
|
||||||
|
|
||||||
|
for k, v in chat_list.items():
|
||||||
|
create_matcher(k, v['pattern'], v['cooldown'], v['pro'], v['files'])
|
||||||
|
|
@ -1,11 +1,3 @@
|
|||||||
from nonebot import on_regex, logger
|
|
||||||
from nonebot.exception import FinishedException
|
|
||||||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageSegment
|
|
||||||
from ..utils.util import FreqLimiter2
|
|
||||||
from pathlib import Path
|
|
||||||
import random
|
|
||||||
import os
|
|
||||||
|
|
||||||
chat_list = {
|
chat_list = {
|
||||||
'确实': {'pattern': r'.*(雀食|确实).*', 'cooldown': 60, 'pro': 0.6, 'files': ['雀食', '确实']},
|
'确实': {'pattern': r'.*(雀食|确实).*', 'cooldown': 60, 'pro': 0.6, 'files': ['雀食', '确实']},
|
||||||
'坏了': {'pattern': r'.*派蒙.*坏.*', 'cooldown': 60, 'pro': 0.6, 'files': ['你才坏!', '瞎说啥呢?', '派蒙怎么可能会坏!']},
|
'坏了': {'pattern': r'.*派蒙.*坏.*', 'cooldown': 60, 'pro': 0.6, 'files': ['你才坏!', '瞎说啥呢?', '派蒙怎么可能会坏!']},
|
||||||
@ -33,35 +25,3 @@ chat_list = {
|
|||||||
'不明白': {'pattern': r'.*明白.*', 'cooldown': 300, 'pro': 0.5, 'files': ['不明白.mp3']},
|
'不明白': {'pattern': r'.*明白.*', 'cooldown': 300, 'pro': 0.5, 'files': ['不明白.mp3']},
|
||||||
'哪里不对': {'pattern': r'(是|对)(吧|吗)', 'cooldown': 300, 'pro': 0.5, 'files': ['哪里不对.mp3']}
|
'哪里不对': {'pattern': r'(是|对)(吧|吗)', 'cooldown': 300, 'pro': 0.5, 'files': ['哪里不对.mp3']}
|
||||||
}
|
}
|
||||||
|
|
||||||
res_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'res', 'voice')
|
|
||||||
chat_lmt = FreqLimiter2(60)
|
|
||||||
|
|
||||||
|
|
||||||
def create_matcher(chat_word: str, pattern: str, cooldown: int, pro: float, responses):
|
|
||||||
hammer = on_regex(pattern, priority=10)
|
|
||||||
|
|
||||||
@hammer.handle()
|
|
||||||
async def handler(event: GroupMessageEvent):
|
|
||||||
if not chat_lmt.check(event.group_id, chat_word):
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
if not random.random() < pro:
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
chat_lmt.start_cd(event.group_id, chat_word, cooldown)
|
|
||||||
response = random.choice(responses)
|
|
||||||
if '.mp3' not in response:
|
|
||||||
await hammer.finish(response)
|
|
||||||
else:
|
|
||||||
await hammer.finish(MessageSegment.record(file=Path(os.path.join(res_path, response))))
|
|
||||||
except FinishedException:
|
|
||||||
raise
|
|
||||||
except Exception as e:
|
|
||||||
logger.error('派蒙发送语音失败', e)
|
|
||||||
|
|
||||||
|
|
||||||
for k, v in chat_list.items():
|
|
||||||
create_matcher(k, v['pattern'], v['cooldown'], v['pro'], v['files'])
|
|
||||||
|
|
@ -9,7 +9,7 @@ from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageEvent, Me
|
|||||||
from ..utils.util import FreqLimiter
|
from ..utils.util import FreqLimiter
|
||||||
from ..utils.config import config
|
from ..utils.config import config
|
||||||
from asyncio import sleep
|
from asyncio import sleep
|
||||||
from .chat import *
|
import random
|
||||||
|
|
||||||
superuser = int(list(get_driver().config.superusers)[0])
|
superuser = int(list(get_driver().config.superusers)[0])
|
||||||
|
|
||||||
@ -101,16 +101,12 @@ async def ys_pic_handler(event: Union[GroupMessageEvent, MessageEvent]):
|
|||||||
@event_preprocessor
|
@event_preprocessor
|
||||||
async def addFriend(bot: Bot, event: FriendRequestEvent):
|
async def addFriend(bot: Bot, event: FriendRequestEvent):
|
||||||
superuser_msg = f'{event.user_id}请求添加派蒙为好友, 验证信息为:{event.comment}'
|
superuser_msg = f'{event.user_id}请求添加派蒙为好友, 验证信息为:{event.comment}'
|
||||||
if config.paimon_add_friend == 1:
|
if config.paimon_add_friend:
|
||||||
superuser_msg += ',已自动同意'
|
superuser_msg += ',已自动同意'
|
||||||
await sleep(random.randint(2, 4))
|
await sleep(random.randint(2, 4))
|
||||||
await event.approve(bot)
|
await event.approve(bot)
|
||||||
await sleep(random.randint(3, 6))
|
await sleep(random.randint(3, 6))
|
||||||
await bot.send_private_msg(user_id=event.user_id, message=f'旅行者你好呀,这里是小派蒙,发送/help查看帮助哦')
|
await bot.send_private_msg(user_id=event.user_id, message=f'旅行者你好呀,这里是小派蒙,发送/help查看帮助哦')
|
||||||
elif config.paimon_add_friend == 2:
|
|
||||||
superuser_msg += ',已自动拒绝'
|
|
||||||
await sleep(random.randint(2, 4))
|
|
||||||
await event.reject(bot)
|
|
||||||
else:
|
else:
|
||||||
superuser_msg += ',请主人自行处理哦'
|
superuser_msg += ',请主人自行处理哦'
|
||||||
await bot.send_private_msg(user_id=superuser, message=superuser_msg)
|
await bot.send_private_msg(user_id=superuser, message=superuser_msg)
|
||||||
@ -121,16 +117,12 @@ async def addFriend(bot: Bot, event: GroupRequestEvent):
|
|||||||
if event.sub_type != 'invite':
|
if event.sub_type != 'invite':
|
||||||
return
|
return
|
||||||
superuser_msg = f'{event.user_id}邀请派蒙加入群{event.group_id}'
|
superuser_msg = f'{event.user_id}邀请派蒙加入群{event.group_id}'
|
||||||
if config.paimon_add_group == 1 or event.user_id == superuser:
|
if config.paimon_add_group or event.user_id == superuser:
|
||||||
superuser_msg += ',已自动同意'
|
superuser_msg += ',已自动同意'
|
||||||
await sleep(random.randint(2, 4))
|
await sleep(random.randint(2, 4))
|
||||||
await event.approve(bot)
|
await event.approve(bot)
|
||||||
await sleep(random.randint(3, 6))
|
await sleep(random.randint(3, 6))
|
||||||
await bot.send_group_msg(group_id=event.group_id, message=f'旅行者们大家好呀,这里是小派蒙,发送/help查看帮助哦')
|
await bot.send_group_msg(group_id=event.group_id, message=f'旅行者们大家好呀,这里是小派蒙,发送/help查看帮助哦')
|
||||||
elif config.paimon_add_group == 2:
|
|
||||||
superuser_msg += ',已自动拒绝'
|
|
||||||
await sleep(random.randint(2, 4))
|
|
||||||
await event.reject(bot)
|
|
||||||
else:
|
else:
|
||||||
superuser_msg += ',请主人自行处理哦'
|
superuser_msg += ',请主人自行处理哦'
|
||||||
await bot.send_private_msg(user_id=superuser, message=superuser_msg)
|
await bot.send_private_msg(user_id=superuser, message=superuser_msg)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from nonebot import get_driver
|
from nonebot import get_driver
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
class PluginConfig(BaseModel):
|
class PluginConfig(BaseModel):
|
||||||
@ -15,8 +16,9 @@ class PluginConfig(BaseModel):
|
|||||||
paimon_cat_cd: int = 12
|
paimon_cat_cd: int = 12
|
||||||
paimon_ecy_cd: int = 6
|
paimon_ecy_cd: int = 6
|
||||||
paimon_ysp_cd: int = 10
|
paimon_ysp_cd: int = 10
|
||||||
paimon_add_friend: int = 0
|
paimon_add_friend: bool = False
|
||||||
paimon_add_group: int = 0
|
paimon_add_group: bool = False
|
||||||
|
paimon_chat_group: List[int] = []
|
||||||
|
|
||||||
|
|
||||||
driver = get_driver()
|
driver = get_driver()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user