0

我有以下的电报机器人写在Python (3.x)电报回声BOT:的渠道

import telebot 
import subprocess 
from telebot import types 
import os 

bot = telebot.TeleBot(os.environ['BOT_API_TOKEN']) 
@bot.message_handler(commands=['start']) 

def save(messages): 
    for m in messages: 
     if "keyword" in m.text: 
      f = open("channel", "a") 
      f.write(m.text + "\n") 
      f.close() 
      bot.send_message(m.chat.id, "Saved!") 

bot.set_update_listener(save) 
bot.polling() 

的想法是文件channel中存储包含单词keyword的消息。如果我跟他说话,这个机器人完美地工作,但如果我将机器人添加到某个频道,它就不起作用。机器人已禁用隐私模式并启用joingroups选项。

我有另外一个机器人做同样的,但不同的代码: 进口记录 进口OS 从telegram.ext进口更新,的MessageHandler,过滤器

updater = Updater(token=os.environ['BOT_API_TOKEN']) 
dispatcher = updater.dispatcher 
def save(bot, update): 
    print(update.message.text) 
    if "keyword" in update.message.text: 
     f = open("channel", "a") 
     f.write(update.message.text + "\n") 
     f.close() 
     bot.sendMessage(chat_id=update.message.chat_id, text="Saved!") 

save_handler = MessageHandler(Filters.text, save) 
dispatcher.add_handler(save_handler) 
updater.start_polling() 

我不介意在哪个版本能你帮我。

回答

1

如果要处理通道消息,则需要解析channel_post字段而不是message字段。

您可以锁定官方文档的Update部分以了解更多详情。

+0

This Works,thanks!你知道如何发送消息到频道吗? 'bot.sendMessage(chat_id = update.message.update_id,text =“保存!”)'不适合我。 (我的机器人是频道管理员) –

+0

@ n23,不要滥用。这不是评论,是一个新问题。检查这个解决方案并发布一个新的。 – danihp