python - 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>")
我做错了什么 ?帮助初学者
解决方案
找到了错误的解决方案。从改变
await message.answer(message.from_user.id, NOTSUB_MESSAGE)
上
await bot.send_message(message.from_user.id, NOTSUB_MESSAGE)
推荐阅读
- powershell - 如何为具有许多路径参数的 EXE 创建 PS 别名?
- vbscript - 从“-”号中提取一个子字符串,直到字符串结束
- flutter - Flutter - 选择项目后弹出菜单未关闭
- java - 将不同类型的参数传递给java中的枚举
- google-analytics - Google 增强型电子商务跟踪不起作用
- neo4j - sorted map in cypher
- python - 如何将 django 模板中的值列表传递给 django 视图函数?
- angular - Angular6 CLI 将 JavaScript 捆绑到单个文件 (Ionic)
- java - Spring boot分块上传大文件的最佳实践
- nginx - 为不同路径配置 Nginx 子域