141 lines
6.1 KiB
Python
141 lines
6.1 KiB
Python
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 查看帮助" |