first commit
This commit is contained in:
141
control/private.py
Normal file
141
control/private.py
Normal file
@@ -0,0 +1,141 @@
|
||||
from model.AiCat import AiCat
|
||||
from model.McList import McList
|
||||
from model.McFind import McFind
|
||||
from model.McHh import McHh
|
||||
from model.McBind import McBind
|
||||
import toml
|
||||
import logging
|
||||
|
||||
class private:
|
||||
def __init__(self, msg):
|
||||
self.user_id = msg.user_id
|
||||
self.message_id = msg.message_id
|
||||
self.message_type = msg.message_type
|
||||
self.raw_message = msg.raw_message
|
||||
self.sender = msg.sender
|
||||
self.message = msg.message
|
||||
self.self_id = msg.self_id
|
||||
self.time = msg.time
|
||||
def main(self):
|
||||
texts = [seg['data']['text'].strip() for seg in self.message if seg['type'] == 'text']
|
||||
full_text = ' '.join(texts).strip()
|
||||
permission = self.check_permission()
|
||||
if permission is None:
|
||||
return "服务器繁忙,请稍后再逝"
|
||||
elif permission:
|
||||
return self.menu(full_text)
|
||||
else:
|
||||
return "此bot未在该群启用"
|
||||
|
||||
|
||||
|
||||
def check_permission(self):
|
||||
try:
|
||||
with open("./config.toml", "r", encoding="utf-8") as f:
|
||||
config = toml.load(f)
|
||||
allowed_users = config.get("allowed_users", [])
|
||||
except Exception as e:
|
||||
logging.error(str(e))
|
||||
return None
|
||||
|
||||
# 检查当前群是否在允许列表中
|
||||
if allowed_users == "all":
|
||||
return True
|
||||
elif self.user_id in allowed_users:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def menu(self,command):
|
||||
print( command)
|
||||
if command.startswith("/help"):
|
||||
return " \n /help -- 获取帮助 \n /list [服务器名/all] [页数] -- 列出服务器在线人数 \n /find <玩家名>-- 查找指定玩家是否在线 \n /bind <授权码> -- 绑定UNC游戏账户 \n /hh <喊话内容> -- 全服喊话 \n /cat <聊天内容> -- 与猫娘对话 \n /chat <提问内容> -- 智能问答(开发中,暂不可用) \n /status -- 查看bot状态 \n <必要参数> [可选参数]"
|
||||
elif command.startswith("/list"):
|
||||
# 去除前导空格并分割命令
|
||||
parts = command.strip().split()
|
||||
if len(parts) == 1:
|
||||
# 只有 "/list" 命令
|
||||
server = 'all'
|
||||
page = '1'
|
||||
elif len(parts) == 2:
|
||||
# "/list server"
|
||||
server = parts[1]
|
||||
page = '1'
|
||||
elif len(parts) == 3:
|
||||
# "/list server page"
|
||||
server = parts[1]
|
||||
page = parts[2]
|
||||
else:
|
||||
return "参数错误 \n 格式:/list [服务器名/all] [页数]"
|
||||
try:
|
||||
page = int(page)
|
||||
if page < 1:
|
||||
return "请输入大于1的页数 \n 格式:/list [服务器名/all] [页数]"
|
||||
except ValueError:
|
||||
return "输入的页数需为整数 \n 格式 /list [服务器名/all] [页数]"
|
||||
except Exception as e:
|
||||
return "服务器繁忙,请稍后再逝"
|
||||
page -= 1
|
||||
list_player = McList(server, page)
|
||||
answer = McList.main(list_player)
|
||||
return answer
|
||||
elif command.startswith("/find"):
|
||||
# 排除 " /find "" /find"未传参情况
|
||||
parts = command.split("/find ", 1)
|
||||
if len(parts) > 1:
|
||||
chat_content = parts[1].strip()
|
||||
if chat_content:
|
||||
find = McFind(chat_content)
|
||||
answer = McFind.main(find)
|
||||
return answer
|
||||
else:
|
||||
return "请提供查找的玩家名 \n 格式:/find <玩家名>"
|
||||
else:
|
||||
return "请提供查找的玩家名 \n 格式:/find <玩家名>"
|
||||
elif command.startswith("/hh"):
|
||||
# 排除“ /hh "” /hh“未传参情况
|
||||
parts = command.split("/hh ", 1)
|
||||
if len(parts) > 1:
|
||||
chat_content = parts[1].strip()
|
||||
if chat_content:
|
||||
hh = McHh(self.user_id,chat_content)
|
||||
answer = McHh.main(hh)
|
||||
return answer
|
||||
else:
|
||||
return "请提供喊话内容 \n 格式:/hh <喊话内容>"
|
||||
else:
|
||||
return "请提供喊话内容 \n 格式:/hh <喊话内容>"
|
||||
elif command.startswith("/chat"):
|
||||
return "智能问答功能正在开发中,尚不可用!\n开发进度:5%"
|
||||
elif command.startswith("/cat"):
|
||||
# # 排除 " /cat "" /cat"未传参情况
|
||||
# parts = self.content.split(" /cat ", 1)
|
||||
# if len(parts) > 1:
|
||||
# chat_content = parts[1].strip()
|
||||
# if chat_content:
|
||||
# cat = AiCat(chat_content,self.id)
|
||||
# answer = AiCat.main(cat)
|
||||
# return answer
|
||||
# else:
|
||||
# return "你似乎没有提供想和我聊的内容喵~ \n 格式:/cat <提问内容>"
|
||||
# else:
|
||||
# return "你似乎没有提供想和我聊的内容喵~ \n 格式:/cat <提问内容>"
|
||||
return "该内容已移动至猫娘qbot"
|
||||
elif command.startswith("/bind"):
|
||||
# 排除“ /bind "” /bind“未传参情况
|
||||
parts = command.split("/bind ", 1)
|
||||
if len(parts) > 1:
|
||||
chat_content = parts[1].strip()
|
||||
if chat_content:
|
||||
bind = McBind(self.user_id, chat_content)
|
||||
answer = McBind.main(bind)
|
||||
return answer
|
||||
else:
|
||||
return "授权码不可为空 \n 格式:/bind <授权码> \n 在服务器内输入/bind指令获取授权码"
|
||||
else:
|
||||
return "授权码不可为空 \n 格式:/bind <授权码>"
|
||||
elif command.startswith("/status"):
|
||||
return "---MCUNC QBOT---\n Q bot 运行正常 \n 版本: 2.0 pre \n © 融玩文化 | 无尽创意MCUNC"
|
||||
# return "\n Q Bot运行正常 \n Version: 0.2.1 pre-release \n © 融玩文化 | 无尽创意mcunc"
|
||||
else:
|
||||
return "功能不存在 \n 输入/help 查看帮助"
|
||||
Reference in New Issue
Block a user