问题描述
当我得到 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.message
的 callback_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)