Skip to content
Home » Tools » Creating a Python Telegram Bot to Extract Relevant Tweets

Creating a Python Telegram Bot to Extract Relevant Tweets

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()

 

To organize your code and for ease of reference, you can name your Telegram bot file based on its functionality. For example, twitter_feed_bot.py or hashtag_fetcher_bot.py would be appropriate. This file name should reflect its primary purpose for easy identification and use.

Regarding obtaining API keys, you will need keys for two different services: Twitter and Telegram.

  1. Twitter API Keys:
    • Visit the Twitter Developer Platform.
    • Create a developer account if you don’t already have one.
    • Create a new application in your developer dashboard.
    • After creating the application, you will have access to consumer_key, consumer_secret, access_token, and access_token_secret. These keys are used to authenticate your requests to the Twitter API.
  2. Telegram Bot Token:
    • To create a bot in Telegram, message @BotFather in Telegram.
    • Follow the instructions from BotFather to create a new bot.
    • Once your bot is created, BotFather will provide you with a token, which looks like a long string of characters. This is your telegram_token.

Remember to keep your keys secure. Never share them publicly or store them in publicly accessible places like GitHub. It’s better to use environment variables or separate configuration files to store them securely.

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.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *