nonebot / nonebot/adapter-telegram
调用 bot.edit_message_text 函数出现报错 <ActionFailed Bad Request: business connection not found>
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 74
- Forks
- 15
- PR merge metrics
- No merged PRs in 30d
Description
环境
OS: Debian 12
Python: 3.11.2
问题影响的版本
0.1.0b18 - 0.1.0b19
问题描述
在使用Telegram bot api的第三方API Client时,调用bot.edit_message_text时会报错,并且执行失败。
报错信息:
无论是否使用api_server,问题依然存在。
简单代码复现
from nonebot import on, on_command
from nonebot.adapters.telegram import Bot
from nonebot.adapters.telegram.event import CallbackQueryEvent, Event
from nonebot.adapters.telegram.model import (
InlineKeyboardButton,
InlineKeyboardMarkup
)
@on_command('test').handle()
async def _(bot: Bot, event: Event):
inline_keyboard = [[InlineKeyboardButton(text=f"Click >>",callback_data='changetext')]]
await bot.send_to(event.telegram_model.message.chat.id, 'bot.edit_message_text Test',
reply_markup=InlineKeyboardMarkup(inline_keyboard=inline_keyboard))
@on("inline").handle()
async def _(bot: Bot, event: CallbackQueryEvent):
if event.data == 'changetext':
await bot.edit_message_text("Hello World!",
event.message.chat.id, event.message.message_id)
await bot.answer_callback_query(event.id, text="Hello World!")
报错信息
11-12 16:48:58 [SUCCESS] nonebot | Telegram * | [inline.callback_query]: CallbackQuery * from *: changetext
11-12 16:48:58 [DEBUG] nonebot | Checking for matchers in priority 1...
11-12 16:48:58 [INFO] nonebot | Event will be handled by Matcher(type='inline', module=*.plugins.inline, lineno=15)
11-12 16:48:58 [DEBUG] nonebot | Running Matcher(type='inline', module=*.plugins.inline, lineno=15)
11-12 16:48:58 [DEBUG] nonebot | Running handler Dependent(call=_)
11-12 16:48:59 [DEBUG] nonebot | Telegram | Calling API editMessageText
11-12 16:48:59 [DEBUG] nonebot | Telegram | Calling API {'text': 'Now edit_message_text. Hello World!', 'business_connection_id': '*', 'chat_id': '*'}
11-12 16:48:59 [INFO] nonebot | Matcher(type='inline', module=*.plugins.inline, lineno=15) running complete
11-12 16:48:59 [ERROR] nonebot | Running Matcher(type='inline', module=*.plugins.inline, lineno=15) failed.
Traceback (most recent call last):
File "<string>", line 15, in <module>
File ".venv/lib/python3.11/site-packages/nonebot/__init__.py", line 337, in run
get_driver().run(*args, **kwargs)
File ".venv/lib/python3.11/site-packages/nonebot/drivers/fastapi.py", line 188, in run
uvicorn.run(
File ".venv/lib/python3.11/site-packages/uvicorn/main.py", line 579, in run
server.run()
File ".venv/lib/python3.11/site-packages/uvicorn/server.py", line 65, in run
return asyncio.run(self.serve(sockets=sockets))
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
File ".venv/lib/python3.11/site-packages/nonebot/utils.py", line 254, in run_coro_with_shield
return await coro
File ".venv/lib/python3.11/site-packages/nonebot/message.py", line 506, in check_and_run_matcher
await _run_matcher(
> File ".venv/lib/python3.11/site-packages/nonebot/message.py", line 458, in _run_matcher
await matcher.run(bot, event, state, stack, dependency_cache)
File ".venv/lib/python3.11/site-packages/nonebot/internal/matcher/matcher.py", line 900, in run
await self.simple_run(bot, event, state, stack, dependency_cache)
File ".venv/lib/python3.11/site-packages/nonebot/internal/matcher/matcher.py", line 837, in simple_run
await handler(
File ".venv/lib/python3.11/site-packages/nonebot/dependencies/__init__.py", line 113, in __call__
return await cast(Callable[..., Awaitable[R]], self.call)(**values)
File "*/plugins/inline.py", line 18, in _
await bot.edit_message_text("Now edit_message_text. Hello World!",
File ".venv/lib/python3.11/site-packages/nonebot/adapters/telegram/bot.py", line 103, in call_api
await super().call_api(api, **kargs)
File ".venv/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 176, in call_api
raise exception
File ".venv/lib/python3.11/site-packages/nonebot/internal/adapter/bot.py", line 128, in call_api
result = await self.adapter._call_api(self, api, **data)
File ".venv/lib/python3.11/site-packages/nonebot/adapters/telegram/adapter.py", line 248, in _call_api
raise ActionFailed(json.loads(response.content)["description"])
nonebot.adapters.telegram.exception.ActionFailed: <ActionFailed Bad Request: business connection not found>
11-12 16:48:59 [DEBUG] nonebot | Checking for matchers completed
11-12 16:49:29 [DEBUG] nonebot | Telegram | Calling API getUpdates
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with the provided callback-query example, then inspect the Telegram adapter entry points in bot.py (call_api) and adapter.py (_call_api) shown in the traceback. Compare the editMessageText request data with the failing business_connection_id; done means the same edit succeeds without the reported API error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100