/
main.py
58 lines (41 loc) · 1.59 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from telegram.ext import Updater, CommandHandler
from mcstatus import MinecraftServer
from config import TG_TOKEN
servers = {}
def status(update, context):
chat_id = update.message.chat_id
if chat_id not in servers.keys():
update.message.reply_text("Set server address with /server [ip] [port]")
return
server = servers[chat_id]
try:
status = server.status()
except Exception:
update.message.reply_text("Invalid server.")
return
if status.players.online != 0:
players = [i.name for i in status.players.sample]
if status.players.online == 1:
text = f"{status.players.online} player online: {', '.join(players)}."
else:
text = f"{status.players.online} players online: {', '.join(players)}."
else:
text = "No players online."
update.message.reply_text(text)
def setserver(update, context):
try:
chat_id = update.message.chat_id
if len(context.args) not in [1,2]:
raise Exception("Enter valid ip and port. Example: /setserver 192.168.0.1 25565")
if len(context.args) == 1:
server = MinecraftServer.lookup(context.args[0])
else:
server = MinecraftServer.lookup(f"{context.args[0]}:{context.args[1]}")
servers[chat_id] = server
except Exception as e:
update.message.reply_text(str(e))
updater = Updater(TG_TOKEN, use_context=True)
updater.dispatcher.add_handler(CommandHandler('mc', status))
updater.dispatcher.add_handler(CommandHandler('server', setserver))
updater.start_polling()
updater.idle()