Проблеми с ботом телеграм на Python
Есть телеграм бот который говорит погоду, я решил сделать так что бы можно было смотреть не только погоду но и что-то другое. Решил сделать через телеграм клавиатуру но появилась проблема, в коде где только погода захватывала сообщения только код погоды, но теперь захватует сообщение и код клавиатуры. И из-за этого вместо того что бы пользователь сам символ свой город оно захватывает текст кнопки клавиатуры.
API удалил специально. Вот код:
#Импорт модулей
import logging
import telebot
import pyowm
import requests
from telebot import types
#Создание переменной(почти безсмисленно)
num = 1
num = int(num)
#Откритие файла номера лога для читаний
handle = open("test.txt", 'r')
logn = handle.read()
#Создание и написание логов
logging.basicConfig(filename="logs\sample" + logn + ".log" , level=logging.INFO)
log = logging.getLogger("ex")
#Вивод в лог обозначения видов ошибок
logging.debug("This is a debug message")
logging.info("Informational message")
logging.error("An error has happened!")
#Откритие файла номера лога для редактиривания
handle = open("test.txt", 'w')
#Изменения номера лога в файле лога на +1
opent = int(logn) + int(num)
opent = str(opent)
handle.write(opent)
handle.close()
#Код бота
while True:
#Создание переменной
test = "0"
#Привязка бота к уникальному аунтификатор(api-code)
bot = telebot.TeleBot('API')
#Стартовая команда для начала роботи с ботом
@bot.message_handler(commands=['start'])
#Вивод сообщения для того что би узнать город
def start_message(message):
#bot.send_message(message.chat.id, 'Привет. Напиши город что би узнать погоду в нем.')
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Погода")
item2 = types.KeyboardButton("Что-то другое")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Вибирете нужний вариант.".format(message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def lalala(message):
if message.chat.type == 'private':
if message.text == 'Погода':
#Захват текста которий пишут боту
start_message(message)
def start_message(message):
bot.send_message(message.chat.id, 'Привет. Напиши город что би узнать погоду в нем.')
send_text(message)
@bot.message_handler(content_types=['text'])
def send_text(message):
test = message.text.lower()
#Функция вивода погоди и температури
try:
#Привязка к уникальному аунтификатору(api-code)
owm = pyowm.OWM('API', language='ru')
#Захват города которий пишет человек
test = message.text.lower()
#Получения даних погоди города
observation = owm.weather_at_place(test)
#Получения погоди и т.д
w = observation.get_weather()
#Получение температури в цельсиях
temp = w.get_temperature('celsius')['temp']
#Получение статуса погоди
status = w.get_detailed_status()
#Красивий вивод текста
if test == 'киев':
city = 'Киеве'
bot.send_message(message.chat.id, "В " + city + ": " + status)
#Вивод статуса погоди
else: bot.send_message(message.chat.id, "В " + test + ": " + status)
#Вивод температури в цельсиях
bot.send_message(message.chat.id, "Температура" + ": " + str(temp)+ " градусов по цельсию")
#Фукция защити от крашей из-за ввода неправильного города
except pyowm.exceptions.api_response_error.NotFoundError:
bot.send_message(message.chat.id, 'Город не найден :(')
bot.polling()