python - 没有人来自哪里
问题描述
我正在尝试编写我的机器人电报,其想法是,例如,通过选择内联按钮 20 分钟,20 分钟后用户将收到通知,或者更确切地说是最初用 exel 和 python 编写的链接将此数据转换为 JSON,然后显示在电报机器人中。但我遇到了一个小易碎品。一切都很好,除了链接之外,我还收到消息none,我不明白它来自哪里。我会很高兴你的帮助。
这是主要的机器人代码:
# 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()
我该怎么办?为什么会这样?请帮帮我)
解决方案
推荐阅读
- electron - 在 Electron 中,如何通过单击在顶部显示父窗口?
- vba - 有一个复选框更新表中的字段
- python - 如果按下键,玩家射击 rects(没有 pygame)
- css - 如何使用引导类连续对齐文本?
- python - 用 ASCII 标点符号、数字和大写字母进行凯撒加密?
- c# - 我在我的 asp.net c# 代码中遇到的约束错误是什么?我认为这是一些与数据表网格相关的问题,但我无法解决
- reactjs - 后台 Firebase 推送通知数据存储在 React Web 应用程序的本地存储中
- git - git clone git@bitbucket.org:... auto core.fileMode true
- reactjs - 连接到直播时出现“用户无法发布流”错误
- json - 如何创建 .NET Core ODATA 自定义类型转换器?