Building a Python Telegram Bot
Python Telegram bots have gained popularity due to their ability to automate tasks and provide real-time information. In this article, we will explore the process of creating a Python Telegram bot that can extract relevant tweets. By leveraging the power of the Twitter API and Python’s libraries, we can build a bot that fetches tweets containing specific keywords and sends them to a Telegram chat. This bot can be a valuable tool for monitoring social media trends or gathering data for analysis.
Extracting Relevant Tweets: A Step-by-Step Guide
To begin building our Python Telegram bot, we first need to set up a Telegram bot through the BotFather platform. This will provide us with an API token that we can use to interact with Telegram. After obtaining our API token, we can install the necessary Python libraries such as python-telegram-bot and tweepy.
Once our environment is set up, we can start coding our bot. We will use the python-telegram-bot library to handle Telegram interactions and the tweepy library to access the Twitter API. We can define a function that receives messages from Telegram and extracts the relevant tweets. By using the Twitter API’s search functionality and passing our desired keywords, we can retrieve a list of tweets related to the topic of interest. We can then extract the relevant information from each tweet, such as the username, content, and timestamp.
In this article, we have explored the process of building a Python Telegram bot to extract relevant tweets. By combining the power of the Telegram and Twitter APIs with Python’s libraries, we can create a bot that fetches tweets containing specific keywords and sends them to a Telegram chat. This bot can be useful for various purposes, such as monitoring social media trends, gathering data for analysis, or simply staying updated on topics of interest. With the step-by-step guide provided, you can now start building your own Python Telegram bot and enhance your automation capabilities.
o achieve your goal, you’ll need to make use of two APIs – the Twitter API for fetching tweets, and the Telegram API for interacting with your bot. You also need libraries to help you interact with these APIs. For Python, those would be tweepy for Twitter and python-telegram-bot for Telegram.
import logging
from telegram import Update, ForceReply
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
import tweepy
import time
# Twitter API credentials
consumer_key = "..."
consumer_secret = "..."
access_token = "..."
access_token_secret = "..."
# Telegram Bot Token
telegram_token = '...'
# Setup Twitter API
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
# Global variable to track last request time
last_request_time = time.time()
def start(update: Update, context: CallbackContext) -> None:
"""Send a message when the command /start is issued."""
user = update.effective_user
update.message.reply_markdown_v2(
fr'Hi {user.mention_markdown_v2()}\!',
reply_markup=ForceReply(selective=True),
)
def get_tweets(update: Update, context: CallbackContext) -> None:
"""Get tweets by hashtag."""
global last_request_time
current_time = time.time()
if current_time - last_request_time < 10: # 10 seconds delay between requests
update.message.reply_text("Please wait a bit before making another request.")
return
hashtag = update.message.text
try:
tweets = api.search(q=hashtag, count=5, tweet_mode="extended") # Searching for recent tweets
for tweet in tweets:
update.message.reply_text(f'Tweet from {tweet.user.screen_name}:\n{tweet.full_text}')
last_request_time = time.time()
except tweepy.TweepError as e:
logger.error(f"Twitter API error: {e}")
update.message.reply_text("Error fetching tweets, please try again later.")
def main() -> None:
"""Start the bot."""
updater = Updater(token=telegram_token)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("hashtag", get_tweets)) # New command handler for hashtags
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, get_tweets))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
With this script, once the bot is running, you can retrieve tweets with a particular hashtag by sending the bot a message containing the hashtag. Note that we are only retrieving the most recent 5 tweets for simplicity.
Note: Ensure to replace the "..." in the consumer_key, consumer_secret, access_token, access_token_secret, and telegram_token with your actual credentials. You can get these by creating an app on Twitter and Telegram.
Make sure you have installed the necessary Python packages by running pip install tweepy python-telegram-bot.
Also, bear in mind that Twitter’s standard search API only serves tweets from the last week. If you need to retrieve tweets older than a week, you should consider using Twitter’s premium or enterprise APIs.
