Facebook
From Gamboge Earthworm, 3 Years ago, written in Python.
This paste is a reply to bad_request from Nik - view diff
Embed
Download Paste or View Raw
Hits: 201
  1. import telebot
  2. import steam
  3. from steam import game_servers as gs
  4. import logging
  5.  
  6. #logger = telebot.logger
  7. #telebot.logger.setLevel(logging.DEBUG) # Outputs debug messages to console.
  8. # Телеграмм-Бот для игры Red Orchestra 2
  9.  
  10. token = 'токен'
  11. bot = telebot.TeleBot(token)
  12.  
  13. #helpers
  14. def get_server_status():
  15.     server_addr = next(gs.query_master(r'gameaddr37.230.228.193:7778'))  # Connect to server RO2 RU
  16.     info_map = gs.a2s_info(server_addr)['map']
  17.     # info_ping = gs.a2s_info(server_addr)['_ping'] "</b>nПинг: " + str(info_ping)[0:6]
  18.     info_players = gs.a2s_info(server_addr)['players']
  19.     info_max_players = gs.a2s_info(server_addr)['max_players']
  20.     info_bots = gs.a2s_info(server_addr)['bots']
  21.     if info_players == 0:
  22.         return "Сейчас запущена карта: <b>" + str(info_map) + "</b>nИгроков на сервере: " + str(
  23.             info_players) + " из " + str(info_max_players) + "nБотов: " + str(
  24.             info_bots) + "n" + "На сервере пусто... ? Скорее зови друзей! И вперёд! В бой!"
  25.     elif info_players == 63:
  26.         return "Сейчас запущена карта: <b>" + str(info_map) + "</b>nИгроков на сервере: " + str(
  27.             info_players) + " из " + str(info_max_players) + "nБотов: " + str(
  28.             info_bots) + "n" + "Одно местечко на сервере...  Успеешь!? ?"
  29.     elif info_players > 63:
  30.         return "Сейчас запущена карта: <b>" + str(info_map)
  31.         + "</b>nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "nБотов: "
  32.         + str(info_bots) + "n" + "Свободных мест пока нет ???  Проверь немного позже..."
  33.     else:
  34.         return "Сейчас запущена карта: <b>" + str(info_map)
  35.         + "</b>nИгроков на сервере: " + str(info_players) + " из " + str(info_max_players) + "nБотов: "
  36.         + str(info_bots) + "n" + "На сервере есть места! Сыграем!? ?"
  37.  
  38.  
  39. # Keyboard
  40. markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False)
  41. itembtn1 = telebot.types.KeyboardButton('правила')
  42. itembtn2 = telebot.types.KeyboardButton('статус сервера')
  43. itembtn3 = telebot.types.KeyboardButton('помощь')
  44. itembtn4 = telebot.types.KeyboardButton('о боте')
  45. markup.add(itembtn1, itembtn2)
  46. markup.add(itembtn3, itembtn4)
  47.  
  48. @bot.message_handler(commands=['start'])
  49. def send_welcome(message):
  50.     bot.send_message(message.chat.id, "Приветсвую <b>" + message.from_user.first_name +
  51.                      "</b> aka @" + message.from_user.username + "!", parse_mode = 'html')
  52.     bot.send_message(message.chat.id, "Выбери нужный раздел: ", reply_markup=markup)
  53.  
  54.  
  55. @bot.message_handler(commands=['help'])
  56. def help(message):
  57.     bot.send_message(message.chat.id, "Для проверки статуса RU-сервера Red Orchestra 2, введи /status n" +
  58.                      "Для связи с разработчиком бота пиши @Mr_0hotNik", reply_markup=markup)
  59.  
  60.  
  61. @bot.message_handler(commands=['status']) # !!!хочу, чтобы эта функция вызывалась пр  нажатии кнопки, см. ниже
  62. def server_status(message):
  63.      bot.reply_to(message, get_server_status(), parse_mode='html')
  64.  
  65.  
  66. @bot.message_handler(content_types = ['text'])
  67. def all_text (message):
  68.     get_message_bot = message.text.strip().lower()
  69.     if message.chat.type == 'private':
  70.         if get_message_bot == 'правила':
  71.             bot.reply_to (message, '''На RU-сервере RO2 установлены строгие правила игры. Ознакомиться с ними можно <a href="https://telegra.ph/Pravila-Igrovyh-Serverov-Red-Orchestra-Heroes-of-Stalingrad-04-21">тут</a>
  72.        Если кто-то нарушает правила игры, то сообщи об этом в админский чат @roruadmin.
  73.        При обращении необходимо четко и кратко описать ситуацию, а также указать игровой никнейм игрока
  74.        Пример: <i>Никнейм, подозрение на читы, прошу проверить </i>''',parse_mode = 'html', reply_markup=markup)
  75.         elif get_message_bot == 'статус сервера':
  76.             bot.reply_to(message, get_server_status(), parse_mode = 'html', reply_markup=markup)  # !!! вот тут, чтобы она вызывалась, что
  77.         elif get_message_bot == 'помощь':
  78.             bot.reply_to(message, '''Для проверки статуса RU-сервера Red Orchestra 2, нажми кнопку "статус сервера"
  79.        Для связи с разработчиком бота пиши @Mr_0hotNik.
  80.        Правила игры на сервере, доступны при нажатии кнопки "правила"''', parse_mode = 'html', reply_markup=markup)
  81.         elif get_message_bot == 'о боте':
  82.             bot.reply_to(message, "Бот русскоязычного сообщества Red Orchestra 2", parse_mode = 'html', reply_markup=markup)
  83.         else:
  84.            bot.reply_to(message, "Что-то пошло не так! Воспользуйся лучше кнопками ниже", parse_mode = 'html', reply_markup=markup)
  85.  
  86.  
  87. bot.polling(none_stop=True)