Previously, I have already developed bots for Telegram with Aiogram. But those bots worked exactly like telegram bots. I wanted to automate telegram actions on behalf of my user. It’s like I’m doing the action. To do this, I found and used the wonderful Telethon framework. It is essentially a telegram client written in Python.
The first client bot appeared in my head as a simulation of my continuous activity in the messenger. I am already an active telegram user and I do not think that this will affect my status much. The bot is useful for those who want to hide their regular visits by adding fake visits. At the same time, it remains possible to see someone else’s activity. If you completely hide your status, you also do not see about others
Before working with Telethon, you need get your API ID and hash secret:
- Login to Telegram dev website with your own account with the phone number of the developer account to use.
- Click under API Development tools.
- A Create new application window will appear. Fill in your application details. There is no need to enter any URL, and only the first two fields (App title and Short name) can currently be changed later.
- Click on Create application at the end. Remember that your API hash is secret and Telegram won’t let you revoke it. Don’t post it anywhere
Now let’s move on to programming. I will provide the source code, the environment setup is already known to you even if you are a beginner Python Dev.
from telethon import TelegramClient import threading #Threading need for creating continuously loop from threading import * import asyncio import random from datetime import datetime import os logfilename = 'log.csv' #Logging events into this file async def main(): loop = asyncio.new_event_loop() api_id = 0000000 #Your API ID from dev site api_hash = '6587575ytytytytytytytyty6565657' #Your API HASH from dev site client = TelegramClient('evgdev', api_id, api_hash, loop=loop) async with client: me = await client.get_me() print(me.phone) await client.send_message('me', 'Ass!') #Sending single message to Saved messages chat for wakeup activity async for message in client.iter_messages('me'): #checking for last message in 'me' chat print(message.id) timenow = datetime.now() with open(logfilename, 'a', encoding="utf-8") as file_object: file_object.write(f'"{timenow}"\n') # wtiting to log await client.delete_messages('me', message.id) # deleting message for preventing garbage collection break # we need only one FOR iteration return def runAll(): global state threading.Timer(int(random.choice(range(120, 300))), runAll).start() asyncio.run(main()) runAll()
At first time, program will request authorization by phone number.
Enjoy!