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'] "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 "Сейчас запущена карта: " + str(info_map) + "nИгроков на сервере: " + str( info_players) + " из " + str(info_max_players) + "nБотов: " + str( info_bots) + "n" + "На сервере пусто... ? Скорее зови друзей! И вперёд! В бой!" elif info_players == 63: return "Сейчас запущена карта: " + str(info_map) + "nИгроков на сервере: " + str( info_players) + " из " + str(info_max_players) + "nБотов: " + str( info_bots) + "n" + "Одно местечко на сервере... Успеешь!? ?" elif info_players > 63: return "Сейчас запущена карта: " + str(info_map) + "nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "nБотов: " + str(info_bots) + "n" + "Свободных мест пока нет ??? Проверь немного позже..." else: return "Сейчас запущена карта: " + str(info_map) + "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, "Приветсвую " + message.from_user.first_name + " 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 установлены строгие правила игры. Ознакомиться с ними можно тут Если кто-то нарушает правила игры, то сообщи об этом в админский чат @roruadmin. При обращении необходимо четко и кратко описать ситуацию, а также указать игровой никнейм игрока Пример: Никнейм, подозрение на читы, прошу проверить ''',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)