summaryrefslogtreecommitdiff
path: root/ATRI/plugins/plugin_chat/__init__.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2020-11-29 15:17:32 +0800
committerKyomotoi <[email protected]>2020-11-29 15:17:32 +0800
commit0a7729f233d0fd02ce970d905f477041dce6b357 (patch)
treee9494c234a391ad57ef2641e208050898450aa4f /ATRI/plugins/plugin_chat/__init__.py
parentdb437589398c5d6d8925681a81bac387746b1ede (diff)
downloadATRI-0a7729f233d0fd02ce970d905f477041dce6b357.tar.gz
ATRI-0a7729f233d0fd02ce970d905f477041dce6b357.tar.bz2
ATRI-0a7729f233d0fd02ce970d905f477041dce6b357.zip
[Upload]
优化代码结构 更新关键词回复 对部分口头命令进行实际命令化
Diffstat (limited to 'ATRI/plugins/plugin_chat/__init__.py')
-rw-r--r--ATRI/plugins/plugin_chat/__init__.py125
1 files changed, 105 insertions, 20 deletions
diff --git a/ATRI/plugins/plugin_chat/__init__.py b/ATRI/plugins/plugin_chat/__init__.py
index a2bab74..0474d46 100644
--- a/ATRI/plugins/plugin_chat/__init__.py
+++ b/ATRI/plugins/plugin_chat/__init__.py
@@ -11,7 +11,9 @@
__author__ = 'kyomotoi'
import os
+import re
import json
+import time
from pathlib import Path
from random import choice
from random import randint
@@ -24,7 +26,7 @@ from nonebot.rule import to_me
from nonebot.sched import scheduler
from nonebot.typing import Bot, Event
from nonebot.permission import SUPERUSER
-from nonebot.plugin import on_command, on_message, on_notice, on_request
+from nonebot.plugin import on_command, on_message, on_notice, on_request, on_regex
from ATRI.utils.utils_times import countX
from ATRI.utils.utils_yml import load_yaml
@@ -61,6 +63,90 @@ async def _(bot: Bot, event: Event, state: dict) -> None:
)
+# ======================================================================
+# · 关键词回复,使用 json 存储,包含人设固定回复,以及咱添加的亿小部分
+# · 添加关键词位于此处,审核位于 plugin_admin 文件下。
+# Usage:
+# - /learnrepo [key] [repo] [proba]
+# For SUPERUSER:
+# - 关键词审核
+# - /learnrepo del [key]
+# Tips:
+# - 普通用户添加需等维护者审核
+# - 参数类型:
+# * key: 关键词(for匹配)
+# * repo: 回复
+# * proba: 机率(x>=1)(int)
+# ======================================================================
+KEY_PATH = Path('.') / 'ATRI' / 'plugins' / 'plugin_chat' / 'key_repo.json'
+KEY_WAITING_PATH = Path(
+ '.') / 'ATRI' / 'plugins' / 'plugin_admin' / 'key_repo_waiting.json'
+with open(KEY_PATH, 'r', encoding='utf-8') as f:
+ data = json.load(f)
+with open(KEY_WAITING_PATH, 'r', encoding='utf-8') as f:
+ data_rev = json.load(f)
+
+keyRepo = on_message(rule=check_banlist())
+
+
+async def _(bot: Bot, event: Event, state: dict) -> None:
+ for key in data.keys():
+ proba = randint(1, data[key][1])
+ if proba == 1:
+ await keyRepo.finish(data.get(key, None))
+
+
+keyRepoADD = on_command('/learnrepo', rule=check_banlist())
+
+
+async def _(bot: Bot, event: Event, state: dict) -> None:
+ user = event.user_id
+ group = event.group_id
+ msg = str(event.message).strip(' ')
+
+ if not msg:
+ await keyRepoADD.finish("请查看文档获取帮助(")
+
+ if not msg[0] or not msg[1] or not msg[2]:
+ await keyRepoADD.finish("ごんめなさい...请检查格式嗷...")
+
+ if not re.findall(r"/^\d{1,}$/", msg[2]):
+ await keyRepoADD.finish("非法字符!咱不接受除int以外的类型!!")
+
+ if msg[0] in data or msg[0] in data_rev:
+ await keyRepoADD.finish("相关关键词咱已经学习过了呢...")
+
+ msg0 = f"Key: {msg[0]}\n"
+ msg0 += f"Repo: {msg[1]}\n"
+ msg0 += f"Proba: {msg[2]}\n"
+
+ if user in master:
+ data[msg[0]] = [
+ msg[1], msg[2], user, group,
+ time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
+ ]
+
+ with open(KEY_PATH, 'w') as f:
+ f.write(json.dumps(data))
+ msg0 = "学習しました~!"
+
+ else:
+ data_rev[msg[0]] = [
+ msg[1], msg[2], user, group,
+ time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
+ ]
+
+ with open(KEY_WAITING_PATH, 'w') as f:
+ f.write(json.dumps(data_rev))
+ msg0 += "请等待咱主人审核嗷~"
+
+ await keyRepoADD.finish(msg0)
+
+
+# ========================[结束关键词回复部分]==========================
+
# Call bot
callMe = on_message(rule=check_banlist())
@@ -70,9 +156,12 @@ async def _(bot: Bot, event: Event, state: dict) -> None:
msg = str(event.raw_event['raw_message']).strip()
if "萝卜子" in msg:
- await bot.send(event, "萝卜子是对咱的蔑称!!")
+ rep = choice(["萝卜子是对咱的蔑称!!", "差不多得了😅", "这好吗?这不好!", "吃咱一发火箭拳——!"])
+ await callMe.finish("萝卜子是对咱的蔑称!!")
elif msg in config['nickname']:
+ if event.user_id in master:
+ rep = choice(["w", "~~", ""])
await callMe.finish("叫咱有啥事吗w")
@@ -179,25 +268,22 @@ async def _(bot: Bot, event: Event, state: dict) -> None:
# 控制 加好友 / 拉群 认证,默认关闭
-controlSelfEvent = on_command('selfevent', permission=SUPERUSER)
+# Tips:
+# - For SUPERUSERS
+# - Normal all false
+# Usage:
+# - selfevent group-true/false
+# - selfevent friend-true/false
+controlSelfEvent = on_command('/selfevent', permission=SUPERUSER)
@controlSelfEvent.handle()
async def _(bot: Bot, event: Event, state: dict) -> None:
args = str(event.message).strip()
- msg0 = ''
global FRIEND_ADD, GROUP_INVITE
if not args:
- msg0 = '-==ATRI INVITE Control System==-\n'
- msg0 += 'Tips:\n'
- msg0 += ' - For SUPERUSERS\n'
- msg0 += ' - Normal all false\n'
- msg0 += 'Usage:\n'
- msg0 += ' - selfevent group-true/false\n'
- msg0 += ' - selfevent friend-true/false\n'
-
- await controlSelfEvent.finish(msg0)
+ await controlSelfEvent.finish("请查看文档获取帮助(")
if 'group-' in args:
if 'true' in args:
@@ -206,7 +292,7 @@ async def _(bot: Bot, event: Event, state: dict) -> None:
if 'true' in args:
FRIEND_ADD = 1
else:
- await controlSelfEvent.finish(msg0)
+ await controlSelfEvent.finish("请查看文档获取帮助(")
await controlSelfEvent.finish('DONE!')
@@ -364,6 +450,10 @@ async def _(bot: Bot, event: Event, state: dict) -> None:
# 清除漂流瓶
+# *For SUPERUSERS
+# - delall
+# - del [num]
+# eg: 清除漂流瓶 del 123
delDriftingBottle = on_command('清除漂流瓶',
rule=check_banlist(),
permission=SUPERUSER)
@@ -374,13 +464,8 @@ async def _(bot: Bot, event: Event, state: dict) -> None:
args = str(event.message).strip()
if not args:
- msg0 = 'Drifting Bottle:\n'
- msg0 += '*For SUPERUSERS'
- msg0 += '- delall\n'
- msg0 += '- del [num]\n'
- msg0 += 'eg: 清除漂流瓶 del 123'
- await delDriftingBottle.finish(msg0)
+ await delDriftingBottle.finish("请查看文档获取帮助(")
if not DRIFTING_BOTTLE_PATH.is_file():
with open(DRIFTING_BOTTLE_PATH, 'w') as f: