bot.send_message 方法不起作用。
写道
名称“bot”未定义
我查遍了,还是没找到答案=(
主要.py:
import asyncio
import logging
from aiogram import Bot, Dispatcher
from aiogram.fsm.storage.memory import MemoryStorage
import handlers
async def main():
bot = Bot(token="7137.....")
dp = Dispatcher(storage=MemoryStorage())
dp.include_router(handlers.router)
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(main())
处理程序.py:
from aiogram import types, F, Router
from aiogram.filters import Command
router = Router()
@router.message(Command("start"))
async def cmd_start(message: types.Message):
kb = [
[
types.KeyboardButton(text="Да"),
types.KeyboardButton(text="Нет")
],
]
keyboard = types.ReplyKeyboardMarkup(
keyboard=kb,
resize_keyboard=True,
input_field_placeholder="Присутствуете ли вы на работе?"
)
await message.answer('Присутствуете ли вы на работе? После нажатия на кнопку "Присутствую", подтвердите '
'отправку геометки пожалуйста.', reply_markup=keyboard)
@router.message(F.text.lower() == "нет")
async def not_working(message: types.Message):
await message.reply("не присутствую")
@router.message(F.text.lower() == "да")
async def working(message: types.Message):
await message.reply("присутствую")
@router.message(F.text)
async def not_registered(message: types.Message):
await bot.send_message(chat_id=message.from_user.id, text=message.text)
没错,需要将其传递并添加到导入中:
该变量
bot在模块内部声明bot.py,只能在该模块中读取,而您试图从handlers.py没有此类变量的模块中读取它bot.send_message在这种情况下,使用替代方法就足够了,而不是message.answer或message.reply阅读有关它们的更多信息