XZZ/worker/mc.py

78 lines
2.4 KiB
Python
Raw Permalink Normal View History

2020-02-27 21:47:36 +08:00
from zzcore import StdAns
2020-12-18 21:03:30 +08:00
import re, requests
2020-02-28 19:39:40 +08:00
from subprocess import getoutput,call
2020-02-27 21:47:36 +08:00
2020-12-18 21:03:30 +08:00
from config import REMOTE_MC_URL
2020-02-27 21:47:36 +08:00
class Ans(StdAns):
2020-07-15 19:43:33 +08:00
AllowGroup = [959613860, 125733077, 204097403, 1140391080]
2020-02-27 21:47:36 +08:00
def GETMSG(self):
2020-02-28 19:42:53 +08:00
if len(self.parms) < 2:
return '不加参数是坏文明!'
2020-02-27 22:34:47 +08:00
cmd = self.parms[1]
2020-02-28 19:39:40 +08:00
AllowCmd = ['list','status','say']
2020-02-27 22:34:47 +08:00
if cmd in AllowCmd:
2020-02-28 19:39:40 +08:00
if cmd == 'status':
2020-12-18 21:03:30 +08:00
msg = getStatus()
2020-02-28 19:39:40 +08:00
elif cmd == 'list':
2020-12-18 21:03:30 +08:00
msg = getList()
2020-02-28 19:39:40 +08:00
elif cmd == 'say':
2021-01-27 11:33:32 +08:00
saywhat = self.raw_msg['raw_message'][8:]
2020-12-18 21:03:30 +08:00
msg = say(saywhat)
2020-02-27 21:47:36 +08:00
else:
2020-02-28 19:39:40 +08:00
msg = '汝是不是在mc后面添加了奇怪的参数咱可只知道 status list 和 say。'
2020-06-01 22:50:52 +08:00
return msg
2020-12-18 21:03:30 +08:00
def getStatus():
if REMOTE_MC_URL:
2020-12-18 21:07:22 +08:00
output = requests.post(f'{REMOTE_MC_URL}/status').text
2020-12-18 21:03:30 +08:00
else:
output = getoutput('papermc status')
p = re.compile(r'processes = ([0-9]*) \(')
prsnum = re.findall(p,output)[0]
p = re.compile(r' \((.*?)\)',re.S)
prsnames = re.findall(p,output)[0].split(', ')
p = re.compile(r'Total memory usage = (.*)$')
memory = re.findall(p,output)[0]
msg = '咱的MC服务器现在有 '
for prsname in prsnames:
msg = msg + prsname + ' '
msg = msg + '' + prsnum +'个进程,\n一共占用了' + memory +'内存呢。'
return msg
def getList():
if REMOTE_MC_URL:
2020-12-18 21:07:22 +08:00
output = requests.post(f'{REMOTE_MC_URL}/list').text
2020-12-18 21:03:30 +08:00
else:
output = getoutput('papermc command list')
p = re.compile(r'There are (.*?)[ of a max]', re.S)
online = re.findall(p,output)[0]
if online == '0':
msg = '咱看着没有人在线哎\n_(-ω-`_)⌒)_'
else:
msg = '' + online + '个小伙伴在线!'
p = re.compile(r'online: (.*?)[\n>]', re.S)
players = re.findall(p,output)[0].split(', ')
for player in players:
msg = msg + '\n' + player
return msg
def say(saywhat):
if not saywhat:
return '汝让咱say whato(≧口≦)o'
if REMOTE_MC_URL:
2020-12-18 21:07:22 +08:00
code = requests.post(f'{REMOTE_MC_URL}/say',data=saywhat).text
2020-12-18 21:03:30 +08:00
else:
shellcmd = ['papermc','command','say',saywhat]
code = call(shellcmd)
2020-12-18 21:08:31 +08:00
if code == '0':
2020-12-18 21:03:30 +08:00
msg = '咱已经把消息传过去了。'
else:
msg = '٩(ŏ﹏ŏ、)۶竟然失败了,汝是不是让我发送奇怪的话过去!'
return msg