簡體   English   中英

"如何通過 python-telegram-bot 工具獲取電報頻道的消息"

[英]How to get messages of telegram channel by python-telegram-bot tool

我想知道是否有一種可能的方法可以從電報頻道獲取消息,因為我知道我登錄到該帳戶並且我是該頻道的管理員,所以我只想要獲取消息。

import feedparser
    from telegram import Update, ForceReply, InlineKeyboardButton, InlineKeyboardMarkup
    from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext, CallbackQueryHandler
    from bs4 import BeautifulSoup
    from datetime import datetime
    import json
    import telegram
    from time import sleep
    from telegram.ext import MessageHandler, Filters
    
    
    class Config:
        def __init__(self):
            with open("config.json", "r") as config:
                self.config = json.load(config)
    
    
    class TelegramBotChannel:
    
        def __init__(self, token, start_channel_id):
            self.updater = Updater(token=token, use_context=True)
            self.dispatcher = self.updater.dispatcher
            self.start_channel_id = start_channel_id
    
    
    if __name__ == '__main__':
        telegram_bot = TelegramBotChannel(Config().config["token"], Config().config["start"])
        pass

如果機器人是該頻道的成員,則它們只能獲取有關頻道帖子的更新(並且機器人只能以管理員身份添加到頻道)。 如果他們是頻道的管理員,他們將像從其他聊天中一樣收到更新。

要求 :

  • 您的機器人應該在頻道中。 顯然作為管理員

所以首先要做一個函數:

def forwader(update , context):
context.bot.copy_message("@temporary2for"  ,"@tempmain" , update.channel_post.message_id)

之后制作處理程序:

forwadHandler= MessageHandler(Filters.text & (~Filters.command) , forwader)

比注冊您的處理程序:

dispatcher.add_handler(forwadHandler)

不要忘記開始機器人輪詢:

updater.start_polling()
updater.idle()

完整代碼:

from telegram import bot
from telegram.ext import Updater , CommandHandler , Filters , MessageHandler
from config import useless
import logging


updater = Updater(token=useless, use_context=True)
dispatcher = updater.dispatcher
import logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                     level=logging.INFO)





def forwader(update , context):
    
    context.bot.copy_message("@temporary2for"  ,"@tempmain" , update.channel_post.message_id)


forwadHandler= MessageHandler(Filters.text & (~Filters.command) , forwader)



dispatcher.add_handler(forwadHandler)


updater.start_polling()
updater.idle()

有些導入沒用。

這是使用電報機器人從頻道獲取消息的最少代碼,電報機器人是頻道的訂閱者(僅可能是管理員訂閱)。 提供正確的 bot api 作為 KEY。:

from api_keys import bot_api_key as KEY
from telegram.ext import Updater, Filters, MessageHandler

updater = Updater(token=KEY, use_context=True)
dispatcher = updater.dispatcher


def forwarder(update, context):
    msg = update.channel_post
    if msg:
        print(msg)


forwardHandler = MessageHandler(Filters.text & (~Filters.command), forwarder)
dispatcher.add_handler(forwardHandler)
updater.start_polling()
updater.idle()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM