Откуда никто не приходит
Я пытаюсь написать свою телеграмму бота, идея в том, что, например, выбрав встроенную кнопку на 20 минут, через 20 минут пользователь получит уведомление, а точнее ссылку, которая изначально была написана в exel и пишет python эти данные в JSON, а затем отображаются в боте Telegram. Но я наткнулся на небольшую хрупкую. Все работает хорошо, вот только у меня, кроме ссылки, еще и сообщение нет, и я не понимаю, откуда оно взялось. Буду рад вашей помощи.
Вот основной код бота:
# BackHelperBot
# --- основной импорт модулей для работы ---
from aiogram import Bot, bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.types import ReplyKeyboardRemove, \
ReplyKeyboardMarkup, KeyboardButton, \
InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils import executor
import asyncio
# --- импорт токена бота ---
from conf import TOKEN
# --- импорт файлов и функций ---
import time
from timerminuta import timer_number
from timerminuta import timer_number_1
from timerminuta import timer_number_2
import json
from reck import get_new_reck
# --- инициализация бота ---
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
# --- 1 кнопкa основного меню ---
button1 = KeyboardButton('Напоминание') # --- напомнить про то, что нужно выровнять спину
main_menu_razmetka = ReplyKeyboardMarkup().row(button1) # --- разметка основного меню
# --- старт бота по коменде /start ---
@dp.message_handler(commands=['start']) # --- Старт бота(вызов основного меню и
описание(краткое) второго меню)
async def start_bot_command(message: types.Message):
await message.reply("Здравствуйте {0.first_name}\nВас приветствует бот\n---- BackHelperBot
----\n-----------------------------------------------------\nВы можете:\nНастороить
напоминание нажав в меню кнопку 'Напоминание'".format(message.from_user),
reply_markup=main_menu_razmetka)
# --- Инлайн кнопки для каждой кнопки меню ---
inline_button_1 = InlineKeyboardButton('Через 20 минут', callback_data='inline_btn_1') # ---
напоминание через 30 минут
inline_button_2 = InlineKeyboardButton('Через 45 минут', callback_data='inline_btn_2') # ---
напоминание через 1 час
inline_button_3 = InlineKeyboardButton('Через 1,5 часа', callback_data='inline_btn_3') # ---
напоминание через 2 часа
inline_button_menu_1 =
InlineKeyboardMarkup(row_width=2).add(inline_button_1).add(inline_button_2).add(inline_button_3) #
--- инлайн меню "Напоминание"
# --- основное меню ---
@dp.message_handler()
async def call_menu_of_inline(message: types.Message):
if message.text == 'Напоминание':
await message.reply("Выберите как записаться:", reply_markup=inline_button_menu_1) # -
-- инлайн меню "Напоминание"
# --- использание инлайн кноок ---
@dp.callback_query_handler(lambda c: c.data == 'inline_btn_1') # --- напоминание через 20
минут
async def process_callback_button1(callback_query: types.CallbackQuery):
await bot.answer_callback_query(callback_query.id)
timer_number()
with open("vivod_reck.json") as file:
vocabulary = json.load(file)
for back in range (1, 6):
for k, v in sorted(vocabulary.items())[-2:]:
link = f"{v['link']}"
await bot.send_message(callback_query.from_user.id, link)
time.sleep(3)
# Полигон ------------------------------------------------------------------------------------
-----------------------
if __name__ == '__main__':
loop = asyncio.get_event_loop()
# loop.create_task(news_every_minute())
executor.start_polling(dp)
Вот код, который считывает ссылки из файла exel и записывает в JSON
from typing_extensions import runtime
import json
import openpyxl
book = openpyxl.open("reck.xlsx", read_only = True)
sheet = book.active
def get_new_reck():
vocabulary = {}
for row in range(2, sheet.max_row + 1):
number_link = sheet[row][0].value
link = sheet[row][1].value
# print(number_link, link)
vocabulary[number_link] = {
"link": link
}
with open("vivod_reck.json", "w", encoding='utf-8') as file:
json.dump(vocabulary, file, indent=4, ensure_ascii=False)
get_new_reck()
Что делать? Почему это происходит? Помоги мне, пожалуйста)