使用 call.message 对象发送消息

问题描述

重点是我想自动返回到我的机器人的开始菜单

当我得到 message 对象时,一切正常:我分配了 message.text = '/start'调用start_menu(message)

@bot.message_handler()
def start_menu(message):
    if message.text == '/start':
         # ...
         # some code
         # ...

def get_something(message):
    # ...
    # some code 
    # ...
    message.text = '/start'
    start_menu(message)

但是当我对来自 call.messagecallback_query_handler() 对象尝试同样的操作时,出现错误

def some_function(message):
    # ...
    # some code 
    # ...
    message.text = '/start'
    start_menu(message)

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == 'some_data':
        some_function(call.message)

对 Telegram API 的请求未成功。错误代码:403。说明:禁止:机器人无法向机器人发送消息

我尝试创建新的 message 对象,但是在使用 message.from_user 函数中的 bot.send_message() 时遇到了 start_menu(message) 字段的问题。

def some_function(message):
    # ...
    # some code 
    # ...
    new_message = telebot.types.Message(message_id=message.message_id,chat=message.chat,content_type=["text"],date=dt.datetime.today().timestamp(),from_user=message.chat.id,options={},json_string="")
    new_message.text = '/start'
    start_menu(new_message)

bot.send_message(message.from_user.id,title) > AttributeError: 'int' 对象没有属性 'id'

所以,我想我需要在 from_user 定义时使用其他东西来初始化 new_message 字段。但已经不知道了。

请帮忙。提前谢谢

解决方法

解决了。

如果传递给 from_user 字段 call.message.chat 对象本身,它会起作用。

def some_function(message):
    # ...
    # some code 
    # ...
    new_message = telebot.types.Message(message_id=message.message_id,chat=message.chat,content_type=["text"],date=dt.datetime.today().timestamp(),from_user=message.chat,options={},json_string="")
    new_message.text = '/start'
    start_menu(new_message)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...