python - 使用 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.message
但是当我对object from进行同样的尝试时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' object has no attribute '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)
推荐阅读
- javascript - 如何在 React 中单独打开下拉菜单?
- azure - 有没有办法使用 Azure Devops 将 yaml 构建管道转换为发布管道?
- python - 你如何分解多个不同长度的列表列
- html - 奇怪的蓝色轮廓/边框搜索按钮 iOS
- deep-learning - Darknet yolo v4 - 如何获得当前的学习率?
- html - 如何在没有 Beautiful Soup 的情况下抓取 span 类
- java - 如何将来自间接依赖项目的版本合并到一个项目中
- r - 在 R 中运行并行 API 测试
- vuejs2 - 我在 vue 中使用 Vuei18n 进行翻译。静态词由 axios 提供后端。但是 VueI18n 没有等待 axios 并且消息是空的
- r - 如何从 Shiny 中的过滤数据创建条形图?