Zam: A Telegram/Twitter Bot for posting tweets to Telegram channels
This program is dedicated to Roohollah Zam. He was an Iranian activist and journalist. Zam played a high-profile role in the 2017–2018 Iranian protests, to which he devoted special coverage at the time. In June 2020, an Iran court found him guilty of "corruption on earth" for running a popular anti-government forum, which officials said had incited the 2017–2018 Iranian protests. He was sentenced to death by the regime court and was executed on 12 December 2020. |
Zam is a Telegram/Twitter bot which can accept tweet urls and post the tweets to a Telegram channel. Zam downloads all the media of the tweets using telegram servers so there is no downloading/uploading on your server side.
- Clone the repository or download the source code.
- cd into the repository directory.
- Run
pip3 install -r requirements.txt
orpip install -r requirements.txt
In order to use the program, you need a Twitter bot API, two Telegram bot APIs, and three telegram channels. First, edit the following parameters in src/creds.json file:
- API_KEY: API key of the Twitter bot. Use this instruction to get one
- API_KEY_SECRET: Secret key of API of the Twitter bot
- BEARER_TOKEN: Beareer token of the Twitter bot
- ACCESS_TOKEN: Access token of the Twitter bot
- ACCESS_TOKEN_SECRET: Access token secret of the Twitter API
- ADMIN_TELEGRAM_BOT: Token of the admin bot in telegram. This bot will only respond to the telgram users which you specify
- SUGGESTIONS_TELEGRAM_BOT: Token of the suggestion bot in telegram. This bot will respond to any user who send a tweet link
- MAIN_CHANNEL_CHAT_ID: Chat ID of your main channel
- ADMIN_CHAT_ID: Chat ID of the admin channel
- SUGGESTIONS_CHAT_ID: Chat ID of the suggestion channel
- CHANNEL_NAME: Name of main channel in telegram (e.g @zam)
- ADMIN_ID: A list containing telegram usernames of the admins (e.g ['admin1', 'admin2', 'admin3'])
To run the program, use the following command:
Amin@Maximus:Zam $ python3 src/main.py
To learn more about the options, you can use the following command:
Amin@Maximus:Zam $ python3 src/main.py --help
Usage: main.py [OPTIONS]
Zam: A Telegram Bot for posting tweets in a Telegram channel
Options:
--time_diff TEXT Difference between the time of the tweet and
the time of the server running the bot.
Format: HOURS:MINUTES
--mahsa_message BOOLEAN A message about Mahsa Amini's murder will be
sent to the channel with a timer which is
updated evety few seconds.
--reference_snapshot BOOLEAN A snapshot of the reference tweets (Qouted
tweet or the tweet which main tweet is a
reply to) will be set as one of the media of
the post. Note that this feature needs
chromium to function
--num_tweets_to_preserve INTEGER RANGE
Number of tweets to be saved in the
database. Only last num_tweets_to_preserve
tweets in the line will be preserved and the
old ones will be deleted [500<=x<=5000]
--user_tweet_limit INTEGER RANGE
Maximum number of the tweets that an user
can send during 1 hour period [1<=x<=120]
--help Show this message and exit