我想创建一个Telegram机器人,检查网站上的新帖子(目前每15秒一次,用于测试目的)。如果是这样,它应该将帖子内容发送到Telegram频道。
为此,我已经有了以下“代码 backbone ”:(格式和添加方面的精细工作稍后介绍)
import requests
import asyncio
from bs4 import BeautifulSoup
from telegram import InputMediaPhoto
from telegram.ext import Updater
# Telegram Bot API Token
API_TOKEN = 'XXXXXXXXXXXXXXXXX'
# URL of the website
URL = 'https://chemiehalle.de'
# List for storing seen posts
seen_posts = []
# Function for fetching posts
def get_posts():
# Send request to the website
res = requests.get(URL)
# Parse HTML content
soup = BeautifulSoup(res.content, 'html.parser')
# Find all posts on the website
posts = soup.find_all('article')
# Iterate over each post
for post in posts:
# Get title of the post
title = post.find('h2', class_='entry-title').text
# Check if post has already been seen
if title not in seen_posts:
# Get image URL
image_src = post.find('img')['src']
# Get short text of the post
text = post.find('div', class_='entry-content clearfix').find('p').text
# Send image, title, and text as message
bot.bot.send_media_group(chat_id='@chemiehalleBot', media=[InputMediaPhoto(media=image_src, caption=title + '\n\n' + text)])
# Add title of the post to the list of seen posts
seen_posts.append(title)
# Main loop
async def main():
while True:
# Call get_posts function every 15s
get_posts()
print("Check for new posts")
await asyncio.sleep(15)
# Initialize Telegram Bot
updater = Updater(API_TOKEN)
bot = updater.bot
# Start main loop
asyncio.run(main())
到目前为止,我发现updater = Updater(API_TOKEN, use_context=True)
产生错误,所以我已经删除了use_context=True
以下的指示,从其他职位在这个网站上。
因为我在updater = Updater(API_TOKEN)
行遇到了错误TypeError: __init__() missing 1 required positional argument: 'update_queue'
。
但不幸的是,我不知道要修改什么。根据这一点,Updater的构造函数需要一个额外的参数update_queue。但我不知道这应该是哪一个,我应该从哪里得到它。
你能帮帮我吗?
非常感谢您的支持!
1条答案
按热度按时间kse8i1jr1#
你的电报版本可能不对。
我是一个有点旧的时尚,但对我来说,版本13仍然工作得很好。
因此,只需运行以下命令替换库版本: