summaryrefslogtreecommitdiff
path: root/ATRI/plugins/util/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/util/__init__.py')
-rw-r--r--ATRI/plugins/util/__init__.py134
1 files changed, 134 insertions, 0 deletions
diff --git a/ATRI/plugins/util/__init__.py b/ATRI/plugins/util/__init__.py
new file mode 100644
index 0000000..1e31bff
--- /dev/null
+++ b/ATRI/plugins/util/__init__.py
@@ -0,0 +1,134 @@
+import re
+from random import choice, random
+
+from nonebot.typing import T_State
+from nonebot.adapters.cqhttp import Bot, MessageEvent
+
+from ATRI.utils.limit import FreqLimiter
+from .data_source import Encrypt, Utils, Yinglish
+
+
+roll = Utils().on_command("/roll", "骰子~用法:1d10 或 2d10+2d10+more")
+
[email protected]_parser # type: ignore
+async def _get_roll(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ quit_list = ["算了", "罢了"]
+ if msg in quit_list:
+ await roll.finish("好吧...")
+ if not msg:
+ await roll.reject("参数呢?!格式:1d10 或 2d10+2d10+more")
+ else:
+ state["roll"] = msg
+
+async def _ready_roll(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ if msg:
+ state["roll"] = msg
+
[email protected]("roll", "参数呢?!格式:1d10 或 2d10+2d10+more")
+async def _deal_roll(bot: Bot, event: MessageEvent, state: T_State):
+ text = state["roll"]
+ match = re.match(r"^([\dd+\s]+?)$", text)
+
+ if not match:
+ await roll.finish("阿——!参数不对!格式:1d10 或 2d10+2d10+more")
+
+ msg = Utils().roll_dice(text)
+ await roll.finish(msg)
+
+
+encrypt_en = Utils().on_command("加密", "我们之前的秘密❤")
+
+@encrypt_en.args_parser # type: ignore
+async def _get_encr_en_text(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ quit_list = ["算了", "罢了"]
+ if msg in quit_list:
+ await roll.finish("好吧...")
+ if not msg:
+ await roll.reject("内容呢?!")
+ else:
+ state["encr_en_text"] = msg
+
+@encrypt_en.handle()
+async def _ready_en(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ if msg:
+ state["encr_en_text"] = msg
+
+@encrypt_en.got("encr_en_text", "内容呢?!")
+async def _deal_en(bot: Bot, event: MessageEvent, state: T_State):
+ text = state["encr_en_text"]
+ is_ok = len(text)
+ if is_ok < 10:
+ await encrypt_en.reject("太短不加密!")
+ en = Encrypt()
+ result = en.encode(text)
+ await encrypt_en.finish(result)
+
+
+encrypt_de = Utils().on_command("解密", "解开我们的秘密❤")
+
+@encrypt_de.args_parser # type: ignore
+async def _get_encr_de_text(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ quit_list = ["算了", "罢了"]
+ if msg in quit_list:
+ await encrypt_de.finish("好吧...")
+ if not msg:
+ await encrypt_de.reject("内容呢?!")
+ else:
+ state["encr_de_text"] = msg
+
+@encrypt_de.handle()
+async def _ready_de(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ if msg:
+ state["encr_de_text"] = msg
+
+@encrypt_de.got("encr_de_text", "内容呢?!")
+async def _deal_de(bot: Bot, event: MessageEvent, state: T_State):
+ text = state["encr_de_text"]
+ en = Encrypt()
+ result = en.decode(text)
+ await encrypt_de.finish(result)
+
+
+sepi = Utils().on_command("涩批一下", "将正常的句子涩一涩~")
+
+_sepi_flmt = FreqLimiter(3)
+_sepi_flmt_notice = ["涩批爬", "✌🥵✌"]
+
[email protected]_parser # type: ignore
+async def _get_sepi(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ quit_list = ["算了", "罢了", "取消"]
+ if msg in quit_list:
+ await sepi.finish("好吧...")
+ if not msg:
+ await sepi.reject("内容呢?!")
+ else:
+ state["sepi_text"] = msg
+
+async def _ready_sepi(bot: Bot, event: MessageEvent, state: T_State):
+ user_id = event.get_user_id()
+ if not _sepi_flmt.check(user_id):
+ await sepi.finish(choice(_sepi_flmt_notice))
+
+ msg = str(event.message).strip()
+ if msg:
+ state["sepi_text"] = msg
+
[email protected]("sepi_text", "内容呢?!")
+async def _deal_sepi(bot: Bot, event: MessageEvent, state: T_State):
+ user_id = event.get_user_id()
+ msg = state["sepi_text"]
+ if len(msg) < 4:
+ await sepi.finish("这么短?涩不起来!")
+
+ result = Yinglish.deal(msg, random())
+ _sepi_flmt.start_cd(user_id)
+ await sepi.finish(result)