You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-telegram-bot遇TypeError:delete_message缺少self参数

问题解决:TypeError: delete_message() missing 1 required positional argument: 'self'

错误原因

你遇到的错误根源有两个:

  • Bot.delete_message()是实例方法,必须通过已经初始化的Bot实例调用,直接用Bot类调用会触发缺少self参数的报错。
  • update.message.reply_text()返回的是Message对象,不是字典,你用msg_info['message_id']这种字典式访问是错误的,应该用对象属性的方式获取值。

修复后的代码

updater = Updater(BOT_TOKEN, use_context=True)
dispatcher = updater.dispatcher

def start(update: Update, context: CallbackContext):
    # reply_text返回Message对象,直接通过属性访问消息信息
    msg_info = update.message.reply_text('Hi')
    print(msg_info)
    msg_id = msg_info.message_id
    chat_id = msg_info.chat.id
    
    # 使用context中已初始化好的bot实例调用删除方法
    status = context.bot.delete_message(chat_id=chat_id, message_id=msg_id)
    print(status)

def handle_inputs(update: Update, context: CallbackContext):
    comd = update.message.text
    if comd == '/start': 
        start(update, context)
    else:
        update.message.reply_text("Sorry '%s' is not a valid command" % update.message.text)
       
def main():
    updater.dispatcher.add_handler(MessageHandler(Filters.text, handle_inputs))
    updater.start_polling()

if __name__ == '__main__':
    main()

关键修改说明

  • 移除了多余的from telegram import Bot导入,直接使用context.bot——这是python-telegram-bot在context模式下自动提供的已初始化Bot实例,无需手动创建。
  • 把字典式的msg_info['message_id']、msg_info['chat']['id']改为对象属性访问msg_info.message_id、msg_info.chat.id,符合Message对象的正确使用方式。

内容的提问来源于stack exchange,提问作者Sain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:10:30