-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.py
More file actions
73 lines (51 loc) · 1.98 KB
/
bot.py
File metadata and controls
73 lines (51 loc) · 1.98 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from os import environ
import sys
import telegram
import socket
import psutil
import math
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
from collections import Counter
#Token do @BotFather
token = environ.get("BOT_OPTIMUS_TOKEN")
machine_name = "Optimus Server"
def get_username(message):
return "{} {} (@{})".format(message.from_user.first_name, message.from_user.last_name, message.from_user.username)
def get_ip():
# s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# s.connect(("8.8.8.8", 80))
# return s.getsockname()[0]
return ""
def start(bot, update):
update.message.reply_text("Welcome to {} assistant bot! An autobot of Insight Data Science Lab!".format(machine_name))
def ping(bot, update):
update.message.reply_text("Hello {}. I am Optimus Prime, leader of the autobots!".format(get_username(update.message)))
def ip(bot, update):
import socket
update.message.reply_text("My local IP is {} (SSH on port 2222)".format(get_ip()))
def memory(bot, update):
mem = psutil.virtual_memory()
total = math.ceil(mem.total/1024/1024/1024)
used = round(mem.used/1024/1024/1024, 2)
perc = round((mem.used/mem.total)*100, 2)
update.message.reply_text("<b>Total memory:</b> {} GB \n<b>Used memory:</b> {} GB ({}%)".format(total, used, perc), parse_mode=telegram.ParseMode.HTML)
def users(bot, update):
users = str.join('\n', set([u.name for u in psutil.users()]))
if users:
msg = "<b>Online users:</b>\n{}".format(users)
else:
msg = "There are no users."
update.message.reply_text(msg, parse_mode=telegram.ParseMode.HTML)
def error(bot, update, error):
print(error)
update.message.reply_text(str(error))
updater = Updater(token)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("ping", ping))
dp.add_handler(CommandHandler("ip", ip))
dp.add_handler(CommandHandler("memory", memory))
dp.add_handler(CommandHandler("users", users))
dp.add_error_handler(error)
updater.start_polling()
updater.idle()