diff --git a/bobby.py b/bobby.py index 90fa57b..a528a77 100644 --- a/bobby.py +++ b/bobby.py @@ -70,18 +70,18 @@ class bobbySession(requests.Session): for i in codes : res.append(i.group()) return res - def getInviteCode(self,step=0)->str: + def getInviteCode(self,ctx:str,step=0)->str: if step == 5: raise SystemError("验证码查找失败") try : codes = self.__getInvite() if codes.__len__() == 0: self.__GenerateInvite() - return self.getInviteCode(step+1) + return self.getInviteCode(ctx,step+1) rand =random.randrange(0,codes.__len__()) return codes[rand] except: self.Refresh() - return self.getInviteCode(step+1) + return self.getInviteCode(ctx,step+1) diff --git a/bot.py b/bot.py index 2797b09..d809bf2 100644 --- a/bot.py +++ b/bot.py @@ -6,9 +6,10 @@ from botpy.message import (Message,GroupMessage) from botpy.flags import (Flag,fill_with_flags) from botpy import( logger,Intents,Client) from botpy.gateway import (BotWebSocket) -from botpy.types.gateway import MessagePayload +from botpy.types.gateway import (MessagePayload) import queue from botpy.types.session import Session +from botpy.types.message import MarkdownPayload from dotenv import load_dotenv import os import types @@ -16,6 +17,7 @@ from bobby import bobbySession from mcwatcher import watcher from threading import Thread import asyncio +from serverGET import ServerGet #环境配置 class Intents_ex(Intents): @@ -114,20 +116,23 @@ class djtuWebsocket (Client) : self.group_add(msg.group_openid) commands:dict[str,types.MethodType|types.FunctionType] = { r'/邀请码' : bobby.getInviteCode, - r'吃什么' : lambda :"是啊吃什么" + r'吃什么' : lambda ctx:"是啊吃什么" , + r'/服务器' : ServerGet.GetNames, } required = msg.content reply = "" for cmd,func in commands.items(): if required.find(cmd) != -1: try: - reply = func() + ctx = required.split(cmd)[1] + reply = func(ctx) except: reply = "服务异常" break if reply.__len__() == 0: reply = "你在发什么东西我怎么看不懂?" - await msg.reply(content=reply) + md = MarkdownPayload(content=reply) + await msg.reply(msg_type=2, markdown=md) def group_add(self,gid :str): # 加入群聊 diff --git a/serverGET.py b/serverGET.py new file mode 100644 index 0000000..7e2f671 --- /dev/null +++ b/serverGET.py @@ -0,0 +1,66 @@ +import requests +from typing import List +class ServerGet : + url = r'https://mcserve-panel.hiso.de5.net/api/overview' + + @staticmethod + def __getNames(): + try: + res = requests.get(ServerGet.url) + data = res.json() + servers:list = data['servers'] + return servers + except Exception as e : + return None + + @staticmethod + def __getIndex(ind:int): + if ind <1 : + return None + try: + res = requests.get(ServerGet.url) + data = res.json() + servers:list = data['servers'] + if ind>servers.__len__(): + return None + server = servers[ind-1] + return server + except Exception as e : + return None + + @staticmethod + def GetNames(ctx:str): + faultmsg = "(っ °Д °;)っ出错了呜....." + + servers = ServerGet.__getNames() + if servers is None : + return faultmsg + if servers.__len__() == 0: + return "(っ °Д °;)っ好像...没有服务器呢" + + # 试探是否有ctx对应的信息 + try : + for s in servers: + if ctx.find(s['name']) != -1: + name = s['name'] + s_id = s['id'] + status = s['status'] + online = s['online'] + url = s['url'] + addr = s['address'] + + msg = "{0} 信息如下:\n \nid: {1}\n状态: {2}\n在线人数: {3}\n信息页面: {4}\n地址: {5}".format(name,s_id,status,online,url,addr) + return msg + except: + '交给轮询试试' + # 服务器轮训 + msg = 'mc服务器如下:\n \n' + try : + for i in servers: + msg += '' + """- """.format(str(i['name'])) +' ' + "状态:"+str(i['status']) + msg +='\n' + msg += ' \n点击蓝字获取详情~' + return msg + except: + return faultmsg + \ No newline at end of file