Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import telebot
- import requests
- from telebot import types
- from bs4 import BeautifulSoup as BS
- import config
- bot = telebot.TeleBot(config.TOKEN)
- # парсер погоды по имени города
- def get_weather(city):
- try:
- r = requests.get('https://sinoptik.ua/погода-%s' % city.lower())
- html = BS(r.content, 'html.parser')
- res_ua = ''
- try:
- t_min = html.select('.temperature .min')[0].text
- t_max = html.select('.temperature .max')[0].text
- descr = html.select('.wDescription .description')[0].text
- res_ua = '%s %s %s' % (t_min, t_max, descr.strip())
- except Exception as err:
- print('warning: error get weather from .ua site')
- pass
- r = requests.get('https://sinoptik.com.by/погода-%s' % city.lower())
- html = BS(r.content, 'html.parser')
- res_by = ''
- try:
- temp = ' '.join(html.find('div', class_ = 'weather__content_tab current').
- find('div', class_ = 'weather__content_tab-temperature').
- text.split())
- descr = html.find('div', class_ = 'weather__article_description-text').text
- res_by = '%s %s' % (temp, descr)
- except Exception as err:
- print('warning: error get weather from .com.by site')
- pass
- res = res_ua or res_by
- if not res:
- return ('не найдена погода для города "%s"' % city)
- else:
- return res
- except Exception as err:
- print('err in get_weather:', err)
- return 'внутренняя ошибка бота при поиске погоды в городе "%s"' % city
- # подготовить основную клавиатуру главного меню
- def prepare_main_keyboard():
- markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
- item1 = types.KeyboardButton("🎲 Рандомный экзаменационный вопрос")
- item2 = types.KeyboardButton("😊 Нажми сюда перед экзаменом")
- item3 = types.KeyboardButton("⏱ Дата экзамена")
- item4 = types.KeyboardButton("☁ Погода в Гродно")
- markup.add(item1, item2, item3, item4)
- return markup
- @bot.message_handler(commands=['start'])
- def welcome(message):
- sti = open('static/welcome.webp', 'rb')
- bot.send_sticker(message.chat.id, sti)
- bot.send_message(message.chat.id,"Здарова студент!, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы дать тебе экзаменационный вопрос.".format(message.from_user, bot.get_me()),
- parse_mode='html', reply_markup=prepare_main_keyboard())
- city_list = ['Концептуальные и методологические основания Digital социологии', 'Объект и предмет Диджетал социологии', 'Основные термины, понятия и методы Дитжитал социологии']
- @bot.message_handler(content_types=['text'])
- def lalala(message):
- if message.chat.type == 'private':
- if message.text == '⏱ Дата экзамена':
- return bot.send_message(message.chat.id, '[Cубота,13 числа в 16 40,Октябрьская 5,209 аудитория.Экзамен проходит письменной форме]')
- elif message.text == '🎲 Рандомный экзаменационный вопрос':
- return bot.send_message(message.chat.id, str(random.choice(city_list)))
- elif message.text == '😊 Нажми сюда перед экзаменом':
- markup = types.InlineKeyboardMarkup(row_width=2)
- item1 = types.InlineKeyboardButton("Да", callback_data='yes')
- item2 = types.InlineKeyboardButton("Нет", callback_data='no')
- markup.add(item1, item2)
- return bot.send_message(message.chat.id, 'Готов к экзамену?', reply_markup=markup)
- elif message.text == '☁ Погода в Гродно':
- return bot.send_message(message.chat.id, get_weather('Гродно'))
- return bot.send_message(message.chat.id, 'Я не знаю что ответить 😢')
- @bot.callback_query_handler(func=lambda call: True)
- def callback_inline(call):
- try:
- if call.message:
- if call.data == 'yes':
- return bot.send_message(call.message.chat.id, 'Тогда удачи тебе 😊', reply_markup=prepare_main_keyboard())
- elif call.data == 'no':
- return bot.send_message(call.message.chat.id, 'Я думаю ты справишься,вопросы не сложные 😢', reply_markup=prepare_main_keyboard())
- else:
- return bot.send_message(call.message.chat.id, 'не понял, повтори')
- except Exception as err:
- print(err)
- if __name__ == '__main__':
- # RUN
- bot.polling(none_stop=True)
Add Comment
Please, Sign In to add comment