2017-05-04 103 views
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