从Telegram的私人频道转发帖子

时间:2018-05-12 17:36:52

标签: python python-3.x telegram telegram-bot python-telegram-bot

我有一个私人频道的邀请链接,我想从这个频道转发(或发送)帖子给我。我想要的伪代码如下所示。

def get_channel(bot, update):
   message=update.channel_post.text
   print(message)

updater = Updater(my_token)
channel_handler = MessageHandler(Filters.text, get_channel, 
channel_post_updates=True, invite_link='http://t.me/aa23faba22939bf')
updater.dispatcher.add_handler(channel_handler)

当我的机器人在我创建的频道中时,这很有效(为我的目的添加了invite_link。我不知道应该在哪里输入invite_link)。但我想要的是我的机器人从我的机器人不在其中的频道转发帖子。包括在内。我更喜欢python,但任何API都可以。我搜索了所有谷歌世界,但没有任何线索..任何提示赞赏。

2 个答案:

答案 0 :(得分:1)

我找到了一个Telethon库的解决方案。它对我有用(http://telethon.readthedocs.io/en/latest/extra/advanced-usage/update-modes.html

def callback(update):
    print('I received', update)

client = TelegramClient('session', api_id, api_hash,
                        update_workers=1, spawn_read_thread=False)

client.connect()
client.add_event_handler(callback)
client.idle()  # ends with Ctrl+C

在回调功能中,您只能过滤频道帖子或群组讯息。

答案 1 :(得分:0)

如果您想将频道中的消息(任何形式)(无论是私人消息还是公共消息)都转发到其他任何聊天室:

  1. 将您的漫游器添加到频道(请注意,漫游器仅作为管理员添加到频道并具有管理员权限)

  2. 以下代码(在python中)将执行转发:

     from telegram import Bot
     def forward(update, context):
         chat_id = update.effective_chat.id
    
         bot = Bot(token=TOKEN)
         bot.forward_message(chat_id = chat_id,
                             from_chat_id = channel_id,
                             message_id = (number))
    

    上面的代码将消息从“ from_chat_id”转发到“ chat_id”(是询问查询的用户的chat_id)

  3. channel_id仅仅是该频道的电报邀请链接(以@开头)

  4. message_id是通道中消息的唯一编号。如果右键单击频道内的消息,然后选择“复制帖子链接”并将其粘贴到某处,则类似于以下内容: https://t.me/c/123456789/2040

    (123456789是专用频道的链接。如果这是公共频道,而不是“ 123456789”,那么该频道的公共地址以@开头)

  5. 消息ID是:2040,不是全部。

引用:https://python-telegram-bot.readthedocs.io/en/stable/telegram.bot.html#telegram.Bot.forward_message