import telebot
import steam
from steam import game_servers as gs
import logging
#logger = telebot.logger
#telebot.logger.setLevel(logging.DEBUG) # Outputs debug messages to console.
# Телеграмм-Бот для игры Red Orchestra 2
token = 'токен'
bot = telebot.TeleBot(token)
#helpers
def get_server_status():
server_addr = next(gs.query_master(r'gameaddr37.230.228.193:7778')) # Connect to server RO2 RU
info_map = gs.a2s_info(server_addr)['map']
# info_ping = gs.a2s_info(server_addr)['_ping'] "</b>nПинг: " + str(info_ping)[0:6]
info_players = gs.a2s_info(server_addr)['players']
info_max_players = gs.a2s_info(server_addr)['max_players']
info_bots = gs.a2s_info(server_addr)['bots']
if info_players == 0:
return "Сейчас запущена карта: <b>" + str(info_map) + "</b>nИгроков на сервере: " + str(
info_players) + " из " + str(info_max_players) + "nБотов: " + str(
info_bots) + "n" + "На сервере пусто... ? Скорее зови друзей! И вперёд! В бой!"
elif info_players == 63:
return "Сейчас запущена карта: <b>" + str(info_map) + "</b>nИгроков на сервере: " + str(
info_players) + " из " + str(info_max_players) + "nБотов: " + str(
info_bots) + "n" + "Одно местечко на сервере... Успеешь!? ?"
elif info_players > 63:
return "Сейчас запущена карта: <b>" + str(info_map)
+ "</b>nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "nБотов: "
+ str(info_bots) + "n" + "Свободных мест пока нет ??? Проверь немного позже..."
else:
return "Сейчас запущена карта: <b>" + str(info_map)
+ "</b>nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "nБотов: "
+ str(info_bots) + "n" + "На сервере есть места! Сыграем!? ?"
# Keyboard
markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False)
itembtn1 = telebot.types.KeyboardButton('правила')
itembtn2 = telebot.types.KeyboardButton('статус сервера')
itembtn3 = telebot.types.KeyboardButton('помощь')
itembtn4 = telebot.types.KeyboardButton('о боте')
markup.add(itembtn1, itembtn2)
markup.add(itembtn3, itembtn4)
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.send_message(message.chat.id, "Приветсвую <b>" + message.from_user.first_name +
"</b> aka @" + message.from_user.username + "!", parse_mode = 'html')
bot.send_message(message.chat.id, "Выбери нужный раздел: ", reply_markup=markup)
@bot.message_handler(commands=['help'])
def help(message):
bot.send_message(message.chat.id, "Для проверки статуса RU-сервера Red Orchestra 2, введи /status n" +
"Для связи с разработчиком бота пиши @Mr_0hotNik", reply_markup=markup)
@bot.message_handler(commands=['status']) # !!!хочу, чтобы эта функция вызывалась пр нажатии кнопки, см. ниже
def server_status(message):
bot.reply_to(message, get_server_status(), parse_mode='html')
@bot.message_handler(content_types = ['text'])
def all_text (message):
get_message_bot = message.text.strip().lower()
if message.chat.type == 'private':
if get_message_bot == 'правила':
bot.reply_to (message, '''На RU-сервере RO2 установлены строгие правила игры. Ознакомиться с ними можно <a href="https://telegra.ph/Pravila-Igrovyh-Serverov-Red-Orchestra-Heroes-of-Stalingrad-04-21">тут</a>
Если кто-то нарушает правила игры, то сообщи об этом в админский чат @roruadmin.
При обращении необходимо четко и кратко описать ситуацию, а также указать игровой никнейм игрока
Пример: <i>Никнейм, подозрение на читы, прошу проверить </i>''',parse_mode = 'html', reply_markup=markup)
elif get_message_bot == 'статус сервера':
bot.reply_to(message, get_server_status(), parse_mode = 'html', reply_markup=markup) # !!! вот тут, чтобы она вызывалась, что
elif get_message_bot == 'помощь':
bot.reply_to(message, '''Для проверки статуса RU-сервера Red Orchestra 2, нажми кнопку "статус сервера"
Для связи с разработчиком бота пиши @Mr_0hotNik.
Правила игры на сервере, доступны при нажатии кнопки "правила"''', parse_mode = 'html', reply_markup=markup)
elif get_message_bot == 'о боте':
bot.reply_to(message, "Бот русскоязычного сообщества Red Orchestra 2", parse_mode = 'html', reply_markup=markup)
else:
bot.reply_to(message, "Что-то пошло не так! Воспользуйся лучше кнопками ниже", parse_mode = 'html', reply_markup=markup)
bot.polling(none_stop=True)