ubot/ubot.py

94 lines
2.4 KiB
Python

import os
from telethon import TelegramClient, events
from telethon.tl.custom import Dialog
from telethon.tl.types import Channel, User, Chat
# Use your own values from my.telegram.org
api_id = os.environ['api_id']
api_hash = os.environ['api_hash']
client = TelegramClient('ubot', api_id, api_hash)
@client.on(events.NewMessage)
async def edit(event):
msg = event.raw_text
if '.alive' in msg:
rpl = "Userbot alive and well!"
await event.edit(rpl)
if '.shg' in msg:
rpl = f"¯\_(ツ)_/¯"
msg = event.text.replace('.shg', rpl)
await event.edit(msg)
if '.stats' in msg:
pms = bots = 0
groups = gadmin = gcreator = 0
chans = cadmin = ccreator = 0
unread = mentions = 0
dialog: Dialog
async for dialog in event.client.iter_dialogs():
entity = dialog.entity
if isinstance(entity, Channel):
if entity.broadcast:
chans += 1
if entity.creator or entity.admin_rights:
cadmin += 1
if entity.creator:
ccreator += 1
elif entity.megagroup:
groups += 1
if entity.creator or entity.admin_rights:
gadmin += 1
if entity.creator:
gcreator += 1
elif isinstance(entity, Chat):
groups += 1
if entity.creator or entity.admin_rights:
gadmin += 1
if entity.creator:
gcreator += 1
elif isinstance(entity, User):
pms += 1
if entity.bot:
bots +=1
mentions += dialog.unread_mentions_count
unread += dialog.unread_count
sender = await event.get_sender()
name = (sender.first_name)
rpl = f'**Stats for {name}**\n'
rpl += f'**Private:** {pms} ({pms - bots} users / {bots} bots)\n'
rpl += f'**Groups:** {groups} ({gadmin} admin / {gcreator} creator)\n'
rpl += f'**Channels:** {chans} ({cadmin} admin / {ccreator} creator)\n'
rpl += f'**Unread:** {unread} ({mentions} mentions)\n'
await event.edit(rpl)
if '.fire' in msg:
rpl = 'IMA FIRING MAH LAZER'
await event.edit(rpl)
if '.sauce' in msg:
rpl = 'Sauce: [ghnou/ubot](https://git.ghnou.su/ghnou/ubot)'
await event.edit(rpl)
if '.help' in msg:
rpl = '**Available userbot commands:**\n'
rpl += '.alive - Check whether the bot is running.\n'
rpl += '.shg - ¯\_(ツ)_/¯\n'
rpl += '.stats - Get user account stats.\n'
rpl += '.fire - IMA FIRING MAH LAZER\n'
rpl += '.sauce - Get the bot\'s source code.\n'
rpl += '.help - Show this help message.'
await event.edit(rpl)
client.start()
client.run_until_disconnected()