如果正确指定了 ID,为什么我的机器人会抱怨 ID?
import telebot
from telebot import types
bot = telebot.TeleBot ('token')
@bot.message_handler(content_types=["rules"])
def rules(message):
bot.send_message(message.chat.id, message.text)
if __name__ == '__main__':
chat = "2112989841"
bot.forward_message('id, 2112989841, 165')
bot.polling(none_stop=True)
我预计有人会输入命令,机器人会转发所需的消息
your text
错误:
Traceback (most recent call last):
File "C:\Users\Boss\PycharmProjects\ClanwarsHLTVBot\main.py", line 2, in <module>
import rules
File "C:\Users\Boss\PycharmProjects\ClanwarsHLTVBot\rules.py", line 15, in <module>
bot.forward_message('id, 2112989841, 165')
TypeError: TeleBot.forward_message() missing 2 required positional arguments: 'from_chat_id' and 'message_id'
Process finished with exit code 1
错误提示没有为
forward_message
函数提供必要的参数。该函数需要三个参数:
- chat_id: 要将消息转发到的聊天 ID。
- from_chat_id: 消息来源的聊天 ID。
- message_id: 要转发的消息 ID。
在的代码中,将所有三个参数都写成了一个字符串
'id, 2112989841, 165'
。应该将它们作为单独的参数传递。
以下是修改后的代码:
import telebot
from telebot import types
bot = telebot.TeleBot('token')
@bot.message_handler(content_types=["text"]) # 使用 "text" 来监听文本消息
def rules(message):
chat_id = "@channel_username" # 将 "@channel_username" 替换为实际的频道用户名
message_id = 165 # 将 165 替换为要转发的消息 ID
bot.forward_message(message.chat.id, chat_id, message_id)
if __name__ == '__main__':
bot.polling(none_stop=True)
解释:
-
我们使用
@bot.message_handler(content_types=["text"])
来监听用户发送的文本消息。 -
在
rules
函数中,我们获取了要将消息转发到的聊天 ID (chat_id
)、消息来源的聊天 ID (chat_id
) 以及要转发的消息 ID (message_id
)。 -
然后,我们使用
bot.forward_message
函数将消息转发到目标聊天。
注意:
-
请将
@channel_username
替换为实际的频道用户名。 -
请将
165
替换为要转发的消息 ID。 - 确保的机器人已添加到要从中转发消息的频道中,并且具有 "转发消息" 的权限。
希望这可以帮助解决问题!
标签:python,telebot From: 78789847