Запускаю бота, все остальные его функции работают, но именно гороскоп не работает, спасибо
from pycbrf import ExchangeRates, Banks
import datetime
import telebot
from pyowm import OWM
from pyowm.utils.config import get_default_config
import config
import random
from telebot import types
# импорт всех библиотек, которые понадобятся для написания бота
bot = telebot.TeleBot(' TOKEN ')#токен бота, взятый у Bot Father
NY = datetime.datetime(2023,1,1)
now = datetime.datetime.today()
first = ["Сегодня — идеальный день для новых начинаний.","Оптимальный день для того, чтобы решиться на смелый поступок!","Будьте осторожны, сегодня звёзды могут повлиять на ваше финансовое состояние.","Лучшее время для того, чтобы начать новые отношения или разобраться со старыми.","Плодотворный день для того, чтобы разобраться с накопившимися делами."]
second = ["Но помните, что даже в этом случае нужно не забывать про","Если поедете за город, заранее подумайте про","Те, кто сегодня нацелен выполнить множество дел, должны помнить про","Если у вас упадок сил, обратите внимание на","Помните, что мысли материальны, а значит вам в течение дня нужно постоянно думать про"]
second_add = ["отношения с друзьями и близкими.","работу и деловые вопросы, которые могут так некстати помешать планам.","себя и своё здоровье, иначе к вечеру возможен полный раздрай.","бытовые вопросы — особенно те, которые вы не доделали вчера.","отдых, чтобы не превратить себя в загнанную лошадь в конце месяца."]
third = ["Злые языки могут говорить вам обратное, но сегодня их слушать не нужно.","Знайте, что успех благоволит только настойчивым, поэтому посвятите этот день воспитанию духа.","Даже если вы не сможете уменьшить влияние ретроградного Меркурия, то хотя бы доведите дела до конца.","Не нужно бояться одиноких встреч — сегодня то самое время, когда они значат многое.","Если встретите незнакомца на пути — проявите участие, и тогда эта встреча посулит вам приятные хлопоты."]
@bot.message_handler(commands=['start']) # Первая команда, команда для начала работы бота
def start(message): #создание функции
markup = telebot.types.ReplyKeyboardMarkup(row_width=3)
itembtn1 = telebot.types.KeyboardButton(' USD ')
itembtn2 = telebot.types.KeyboardButton(' EUR ')
markup.add(itembtn1, itembtn2) #создание кнопок
bot.send_message( message.chat.id, "Добро пожаловать,\n/start - запуск бота\nДля того чтобы узнать гороскоп, напишите 'гороскоп'\n /weather Чтобы узнать погоду и следуйте указаниям бота\nЧтобы узнать курс валюты, введите ее название\n/newyear Количество дней до нового года", reply_markup=markup)
#сообщение бота на команду /start
@bot.message_handler(commands=['weather'])# cоздание команды /weather
def get_msg(message): # бот ждет получение информации собеседника, для своей работы
sent = bot.send_message(message.chat.id, 'Введите название города')
bot.register_next_step_handler(sent, send_weather)
@bot.message_handler(content_types=['text']) # если человек решил узнать курс валют, то программа идет по этому коду.
def message(message):
message_norm = message.text.strip().lower()
if message_norm in ['usd', 'eur']:
rates = ExchangeRates()
bot.send_message(chat_id=message.chat.id,text=f"<b>Сейчас курс :{message_norm.upper()} {float(rates[message_norm.upper()].rate)}</b>", parse_mode="html") #программа отправляет человеку курс на его валюту
def send_weather(message): #создание функции погода, которая работает после работы строчек 20 - 23.
try: #цикл try будет работать, если человек ввел правильное название города
place = message.text
config_dict = get_default_config()
config_dict['language'] = 'ru' # настройки бота под русский язык
owm = OWM('TOKEN', config_dict) #полученный апи ключ с сайта openweathermap.org, без него бот не будет работать
mgr = owm.weather_manager()
observation = mgr.weather_at_place(place)
w = observation.weather
t = w.temperature("celsius") # в какой единице температуры будет выводить
t1 = t['temp']
t2 = t['feels_like']
t3 = t['temp_max']
t4 = t['temp_min']
wi = w.wind()['speed'] # настройки программы, которые будут выведены далее
humi = w.humidity
cl = w.clouds
st = w.status
dt = w.detailed_status
ti = w.reference_time('iso')
pr = w.pressure['press']
vd = w.visibility_distance
bot.send_message(message.chat.id, "В городе " + str(place) + " температура " + str(t1) + " °C" + "\n" +
"Максимальная температура " + str(t3) + " °C" +"\n" +
"Минимальная температура " + str(t4) + " °C" + "\n" +
"Ощущается как" + str(t2) + " °C" + "\n" +
"Скорость ветра " + str(wi) + " м/с" + "\n" +
"Давление " + str(pr) + " мм.рт.ст" + "\n" +
"Влажность " + str(humi) + " %" + "\n" +
"Видимость " + str(vd) + " метров" + "\n" +
"Описание " + str(st) + "\n\n" + str(dt))
except: # цикл except будет работать тогда, когда человек ввел неверное название города
bot.send_message(message.chat.id,"Такой город не найден!")
print(str(message.text),"- не найден")
def get_text_messages(message):
if message.text == "Привет":
bot.send_message(message.from_user.id, "{Хорошо, сейчас я расскажу тебе гороскоп на сегодня.")
keyboard = types.InlineKeyboardMarkup()
key_oven = types.InlineKeyboardButton(text='Овен', callback_data='zodiac')
keyboard.add(key_oven)
key_telec = types.InlineKeyboardButton(text='Телец', callback_data='zodiac')
keyboard.add(key_telec)
key_bliznecy = types.InlineKeyboardButton(text='Близнецы', callback_data='zodiac')
keyboard.add(key_bliznecy)
key_rak = types.InlineKeyboardButton(text='Рак', callback_data='zodiac')
keyboard.add(key_rak)
key_lev = types.InlineKeyboardButton(text='Лев', callback_data='zodiac')
keyboard.add(key_lev)
key_deva = types.InlineKeyboardButton(text='Дева', callback_data='zodiac')
keyboard.add(key_deva)
key_vesy = types.InlineKeyboardButton(text='Весы', callback_data='zodiac')
keyboard.add(key_vesy)
key_scorpion = types.InlineKeyboardButton(text='Скорпион', callback_data='zodiac')
keyboard.add(key_scorpion)
key_strelec = types.InlineKeyboardButton(text='Стрелец', callback_data='zodiac')
keyboard.add(key_strelec)
key_kozerog = types.InlineKeyboardButton(text='Козерог', callback_data='zodiac')
keyboard.add(key_kozerog)
key_vodoley = types.InlineKeyboardButton(text='Водолей', callback_data='zodiac')
keyboard.add(key_vodoley)
key_ryby = types.InlineKeyboardButton(text='Рыбы', callback_data='zodiac')
keyboard.add(key_ryby)
bot.send_message(message.from_user.id, text='Но перед этим, выбери интересующий знак зодиака', reply_markup=keyboard)
elif message.text == "/help":
bot.send_message(message.from_user.id, "Напиши ' Гороскоп ' ")
else:
bot.send_message(message.from_user.id, "Я тебя не понял.....(((\nНажми на кнопочку ")
bot.register_next_step_handler(sent, callback_query_handler)
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == "zodiac":
msg = random.choice(first) + ' ' + random.choice(second) + ' ' + random.choice(second_add) + ' ' + random.choice(third)
@bot.message_handler(commands=['newyear'])
def date(message):
d = NY-now
mm, ss = divmod(d.seconds, 60)
hh, mm = divmod(mm, 60)
bot.send_message(message.chat.id, str(d))
print('До нового года' + str(d) )
bot.polling(none_stop=True, interval=0) # настройка, для того, чтобы бот работал бесконечно, без задержки