首页 > 解决方案 > aiogram.utils.exceptions.BadRequest:找不到用户

问题描述

我正在尝试在频道上放置一个订阅按钮,并根据视频说明检查我的机器人。当一个人订阅了用户的频道时,他会进一步抛出它,如果没有,他会在控制台中抛出一个错误。

left
ERROR:root:TelegramAPIError: Unsupported parse_mode
Update: {"update_id": 268800317, "message": {"message_id": 2180, "from": {"id": 1730575116, "is_bot": false, "first_name": "Hidden", "last_name": "Bot", "username": "hiddenbot13", "language_code": "ru"}, "chat": {"id": 1730575116, "first_name": "Hidden", "last_name": "Bot", "username": "hiddenbot13", "type": "private"}, "date": 1635899827, "text": "/start", "entities": [{"type": "bot_command", "offset": 0, "length": 6}]}}
Traceback (most recent call last):
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 257, in process_update
    return await self.message_handlers.notify(update.message)
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "C:\Users\37369\Desktop\AutoShopV1.3\handlers\users\main_start.py", line 66, in bot_start
    await message.answer(message.from_user.id, NOTSUB_MESSAGE)
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\types\message.py", line 370, in answer
    reply_markup=reply_markup,
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\bot\bot.py", line 314, in send_message
    result = await self.request(api.Methods.SEND_MESSAGE, payload)
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\bot\base.py", line 209, in request
    proxy=self.proxy, proxy_auth=self.proxy_auth, timeout=self.timeout, **kwargs)
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\bot\api.py", line 140, in make_request
    return check_result(method, response.content_type, response.status, await response.text())
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\bot\api.py", line 115, in check_result
    exceptions.BadRequest.detect(description)
  File "C:\Users\37369\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\utils\exceptions.py", line 141, in detect
    raise cls(description)
aiogram.utils.exceptions.BadRequest: Unsupported parse_mode

可能是什么问题呢 ?我没有找到将要显示的按钮。我是从YouTube视频中制作的

这是我更改数据的代码

# - *- coding: utf- 8 - *-T

from aiogram import types
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.builtin import CommandStart

from filters import IsWork, IsUser
from filters.all_filters import IsBuy
from keyboards.default import check_user_out_func
from loader import dp, bot
from states import StorageUsers
from utils.db_api.sqlite import *
from utils.other_func import clear_firstname, get_dates
from data.config import admin_for_logs
prohibit_buy = ["xbuy_item", "not_buy_items", "buy_this_item", "buy_open_position", "back_buy_item_position",
                "buy_position_prevp", "buy_position_nextp", "buy_category_prevp", "buy_category_nextp",
                "back_buy_item_to_category", "buy_open_category"]

CHENNEL_ID = "@uqduqwdqwd"
NOTSUB_MESSAGE = "Для доступа в магазин подпишитесь на наши каналы"


@dp.message_handler(IsWork(), state="*")
@dp.callback_query_handler(IsWork(), state="*")
async def send_work_message(message: types.Message, state: FSMContext):
    if "id" in message:
        await message.answer(" Бот находится на технических работах.")
    else:
        await message.answer("<b> Бот находится на технических работах.</b>")

def check_sub_channel(chat_member):
    print(chat_member['status'])
    if chat_member['status'] != 'left':
       return True
    else:
        return False


@dp.message_handler(text="⬅ На главную", state="*")
@dp.message_handler(CommandStart(), state="*")
async def bot_start(message: types.Message, state: FSMContext):
    await state.finish()
    first_name = clear_firstname(message.from_user.first_name)
    get_user_id = get_userx(user_id=message.from_user.id)
    if get_user_id is None:
        await bot.send_message(admin_for_logs,text = f'<b>✅ Новый пользователь: </b><a href="tg://user?id={message.from_user.id}">{first_name}</a> <code>({message.from_user.id})</code>')
        if message.from_user.username is not None:
            get_user_login = get_userx(user_login=message.from_user.username)
            if get_user_login is None:
                add_userx(message.from_user.id, message.from_user.username.lower(), first_name, 0, 0, get_dates())
            else:
                delete_userx(user_login=message.from_user.username)
                add_userx(message.from_user.id, message.from_user.username.lower(), first_name, 0, 0, get_dates())
        else:
            add_userx(message.from_user.id, message.from_user.username, first_name, 0, 0, get_dates())
    else:
        if first_name != get_user_id[3]:
            update_userx(get_user_id[1], user_name=first_name)
        if message.from_user.username is not None:
            if message.from_user.username.lower() != get_user_id[2]:
                update_userx(get_user_id[1], user_login=message.from_user.username.lower())
            
            if check_sub_channel(await bot.get_chat_member(chat_id=CHENNEL_ID, user_id=message.from_user.id)):
             await message.answer("<b>✌️ Приведствую тебя в нашем магазине ✌️</b>\n<b> В нашем магазине ты купишь только качественные товары </b>\n\n<b> У нас ты можешь продать свой товар </b>\n<b> Наш магазин создан что бы продовать только проверенные товары </b>\n\n<b> МЫ ОТКРЫЛИСЬ 03.11.2021 году. </b>\n",reply_markup=check_user_out_func(message.from_user.id))
            else:
                await message.answer(message.from_user.id, NOTSUB_MESSAGE)

@dp.message_handler(IsUser(), state="*")
@dp.callback_query_handler(IsUser(), state="*")
async def send_user_message(message: types.Message, state: FSMContext):
    await state.finish()
    await bot.send_message(message.from_user.id,
                           "<b>‍♀️ Твой профиль не найден.</b>\n"
                           "▶ Введи повторно /start")



@dp.message_handler(IsBuy(), text=" Купить", state="*")
@dp.message_handler(IsBuy(), state=StorageUsers.here_input_count_buy_item)
@dp.callback_query_handler(IsBuy(), text_startswith=prohibit_buy, state="*")
async def send_user_message(message, state: FSMContext):
    if "id" in message:
        await message.answer(" Покупки в боте временно отключены", True)
    else:
        await message.answer("<b> Покупки в боте временно отключены</b>")

我做错了什么 ?帮助初学者

标签: pythonpython-3.x

解决方案


找到了错误的解决方案。从改变

await message.answer(message.from_user.id, NOTSUB_MESSAGE)

await bot.send_message(message.from_user.id, NOTSUB_MESSAGE)

推荐阅读