Files
vcbot-napcat/control/private.py
2025-07-05 17:26:12 +08:00

141 lines
6.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 查看帮助"