viking_unet

Untitled

Jun 11th, 2020
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.99 KB | None | 0 0
  1. import random
  2.  
  3. import telebot
  4. import requests
  5. from   telebot import types
  6. from   bs4     import BeautifulSoup as BS
  7.  
  8. import config
  9.  
  10. bot = telebot.TeleBot(config.TOKEN)
  11.  
  12. # парсер погоды по имени города
  13. def get_weather(city):
  14.    
  15.     try:
  16.         r = requests.get('https://sinoptik.ua/погода-%s' % city.lower())
  17.         html = BS(r.content, 'html.parser')
  18.         res_ua = ''
  19.         try:
  20.             t_min  = html.select('.temperature .min')[0].text
  21.             t_max  = html.select('.temperature .max')[0].text
  22.             descr  = html.select('.wDescription .description')[0].text
  23.             res_ua = '%s %s %s' % (t_min, t_max, descr.strip())
  24.         except Exception as err:
  25.             print('warning: error get weather from .ua site')
  26.             pass
  27.         r = requests.get('https://sinoptik.com.by/погода-%s' % city.lower())
  28.         html = BS(r.content, 'html.parser')
  29.         res_by = ''
  30.         try:
  31.             temp  = ' '.join(html.find('div', class_ = 'weather__content_tab current').
  32.                              find('div', class_ = 'weather__content_tab-temperature').
  33.                              text.split())
  34.             descr  = html.find('div', class_ = 'weather__article_description-text').text
  35.             res_by = '%s %s' % (temp, descr)
  36.         except Exception as err:
  37.             print('warning: error get weather from .com.by site')
  38.             pass
  39.         res = res_ua or res_by
  40.         if not res:
  41.             return ('не найдена погода для города "%s"' % city)
  42.         else:
  43.             return res
  44.     except Exception as err:
  45.         print('err in get_weather:', err)
  46.         return 'внутренняя ошибка бота при поиске погоды в городе "%s"' % city
  47.  
  48. # подготовить основную клавиатуру главного меню
  49. def prepare_main_keyboard():
  50.     markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
  51.     item1 = types.KeyboardButton("🎲 Рандомный экзаменационный вопрос")
  52.     item2 = types.KeyboardButton("😊 Нажми сюда перед экзаменом")
  53.     item3 = types.KeyboardButton("⏱ Дата экзамена")
  54.     item4 = types.KeyboardButton("☁ Погода в Гродно")
  55.     markup.add(item1, item2, item3, item4)
  56.     return markup
  57.  
  58. @bot.message_handler(commands=['start'])
  59. def welcome(message):
  60.     sti = open('static/welcome.webp', 'rb')
  61.     bot.send_sticker(message.chat.id, sti)
  62.     bot.send_message(message.chat.id,"Здарова студент!, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы  дать тебе экзаменационный вопрос.".format(message.from_user, bot.get_me()),
  63.                      parse_mode='html', reply_markup=prepare_main_keyboard())
  64. city_list = ['Концептуальные и методологические основания Digital социологии', 'Объект и предмет Диджетал социологии', 'Основные термины, понятия и методы Дитжитал социологии']
  65.  
  66. @bot.message_handler(content_types=['text'])
  67. def lalala(message):
  68.     if message.chat.type == 'private':
  69.         if message.text == '⏱ Дата экзамена':
  70.             return bot.send_message(message.chat.id, '[Cубота,13 числа в 16 40,Октябрьская 5,209 аудитория.Экзамен проходит  письменной форме]')
  71.         elif message.text == '🎲 Рандомный экзаменационный вопрос':
  72.             return bot.send_message(message.chat.id, str(random.choice(city_list)))
  73.         elif message.text == '😊 Нажми сюда перед экзаменом':
  74.             markup = types.InlineKeyboardMarkup(row_width=2)
  75.             item1 = types.InlineKeyboardButton("Да", callback_data='yes')
  76.             item2 = types.InlineKeyboardButton("Нет", callback_data='no')
  77.             markup.add(item1, item2)
  78.             return bot.send_message(message.chat.id, 'Готов к экзамену?', reply_markup=markup)
  79.         elif message.text == '☁ Погода в Гродно':
  80.             return bot.send_message(message.chat.id, get_weather('Гродно'))
  81.         return bot.send_message(message.chat.id, 'Я не знаю что ответить 😢')
  82.  
  83. @bot.callback_query_handler(func=lambda call: True)
  84. def callback_inline(call):
  85.     try:
  86.         if call.message:
  87.             if call.data == 'yes':
  88.                 return bot.send_message(call.message.chat.id, 'Тогда удачи тебе 😊', reply_markup=prepare_main_keyboard())
  89.             elif call.data == 'no':
  90.                 return bot.send_message(call.message.chat.id, 'Я думаю ты справишься,вопросы не сложные 😢', reply_markup=prepare_main_keyboard())
  91.             else:
  92.                 return bot.send_message(call.message.chat.id, 'не понял, повтори')
  93.     except Exception as err:
  94.         print(err)
  95.  
  96. if __name__ == '__main__':
  97.  
  98.     # RUN
  99.     bot.polling(none_stop=True)
Add Comment
Please, Sign In to add comment