nonebot / nonebot/adapter-telegram

调用 bot.edit_message_text 函数出现报错 <ActionFailed Bad Request: business connection not found>

Open
#78 2 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.