- 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)
- # 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):
- server_addr = next(gs.query_master(r'\gameaddr\37.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:
- bot.reply_to(message, "Сейчас запущена карта: <b>" + str(info_map)
- + "</b>\nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "\nБотов: "
- + str(info_bots) + "\n" + "На сервере пусто... ? Скорее зови друзей! И вперёд! В бой!", parse_mode = 'html')
- elif info_players == 63:
- bot.reply_to(message, "Сейчас запущена карта: <b>" + str(info_map)
- + "</b>\nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "\nБотов: "
- + str(info_bots) + "\n" + "Одно местечко на сервере... Успеешь!? ?", parse_mode = 'html')
- elif info_players > 63:
- bot.reply_to(message, "Сейчас запущена карта: <b>" + str(info_map)
- + "</b>\nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "\nБотов: "
- + str(info_bots) + "\n" + "Свободных мест пока нет ??? Проверь немного позже...", parse_mode = 'html')
- else:
- bot.reply_to(message, "Сейчас запущена карта: <b>" + str(info_map)
- + "</b>\nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "\nБотов: "
- + str(info_bots) + "\n" + "На сервере есть места! Сыграем!? ?", 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, server_status(message), 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)