Telegram_API / app.py
MohammedAlakhras's picture
Update app.py
84d8632 verified
import gradio as gr
from telethon.sync import TelegramClient, events
import datetime
import socks
import time
import os
import requests
import random
def download_file(url, filename):
response = requests.get(url)
with open(filename, 'wb') as file:
file.write(response.content)
RndMssgs = [
"I've received your message. I'll get back to you as soon as possible.",
"I appreciate your patience and understanding.",
"Your message has been received. I'll respond shortly.",
"I'm currently unavailable, but I'll reply as soon as I can.",
"Your message has been received and it's important to us.",
"I'm away at the moment. Rest assured, I'll respond to your message soon.",
"Your message is received. Thank you for your understanding.",
"I've received your message and will respond at my earliest convenience.",
"I've received your message. I'll make sure to reply as soon as possible.",
"I'm currently out offline, but I'll get back to you shortly.",
"I've received your message. I'll get back to you soon.",
"I'm not available right now, but I've received your message.",
"Thank you for contacting me. I'll respond as soon as I can.",
"I'm currently busy, but I'll make sure to reply to your message as soon as possible.",
"Your message has been received. I'll get back to you shortly.",
"Thank you for your patience. I'll respond as soon as I can.",
"I've received your message and will get back to you shortly.",
"Your message has been received. Thank you for waiting.",
"I'm currently on a break, but I've received your message and will respond soon."
]
proxy_server = '142.93.68.63'
proxy_port = 2434
proxy_secret = 'ee32b920dffb51643028e2f6b878d4eac1666172616b61762e636f6d'
proxy_dc_id = 2 # This is usually 2 for MTProto proxies
proxy = (
socks.SOCKS5,
proxy_server,
proxy_port,
True,
'vpn',
'unlimited'
)
api_id=os.environ['apiID']
api_hash=os.environ['apiHash']
phone=os.environ['phone']
username=os.environ['username']
serssionFile=os.environ['sessionUrlFile']
download_file(serssionFile, 'anon.session')
# Dictionary to track the times when senders were last replied to
reply_times = {}
async def main():
async with TelegramClient('anon', api_id, api_hash) as client:
@client.on(events.NewMessage())
async def my_event_handler(event):
sender = await event.get_sender()
sender_id = sender.id
sender_name = sender.first_name
chat = await event.get_chat()
chat_id = chat.id
text = event.raw_text
# Personal message
if chat_id == sender_id and not sender.bot:
# Check the last reply to this sender
last_reply_time = reply_times.get(str(sender_id), None)
if last_reply_time is None or time.time() - last_reply_time > 60*60*6: # reply only if not replied in the last minute
response = f'Hello <a href="tg://user?id={sender_id}">{sender_name}</a> ๐Ÿ‘‹๐Ÿป ,\n {random.choice(RndMssgs)} ๐Ÿ˜Š'
#response = f'ุฃู‡ู„ุง <a href="tg://user?id={sender_id}">{sender_name}</a> ๐Ÿ‘‹๐Ÿป ,\nุงู„ุญุณุงุจ ู…ุบู„ู‚ ุญุงู„ูŠุงู‹. \n ุงู„ุฑุณุงุฆู„ ุงู„ู‡ุงู…ุฉ ุนุจุฑ <a href="https://www.facebook.com/MohammedAlakras/">Messenger</a> \n \n ุดูƒุฑุงู‹ ู„ุชูู‡ู…ูƒ '
await client.send_message(chat_id, response, parse_mode='HTML',link_preview=False)
reply_times[str(sender_id)] = time.time() # update the last reply time
# Group message
elif username in text:
last_reply_time = reply_times.get(str(str(chat_id)+str(sender_id)), None)
if last_reply_time is None or time.time() - last_reply_time > 60*5:
response = f'Hello <a href="tg://user?id={sender_id}">{sender_name}</a> @ <a href="https://t.me/c/{chat_id}">{chat.title}</a> ๐Ÿ‘‹๐Ÿป,\n {random.choice(RndMssgs)} ๐Ÿ˜Š'
#response = f'ุฃู‡ู„ุง <a href="tg://user?id={sender_id}">{sender_name}</a> ๐Ÿ‘‹๐Ÿป ,\nุงู„ุญุณุงุจ ู…ุบู„ู‚ ุญุงู„ูŠุงู‹. \n ุงู„ุฑุณุงุฆู„ ุงู„ู‡ุงู…ุฉ ุนุจุฑ <a href="https://www.facebook.com/MohammedAlakras/">Messenger</a> \n \n ุดูƒุฑุงู‹ ู„ุชูู‡ู…ูƒ '
await client.send_message(chat_id, response, parse_mode='HTML',link_preview=False)
reply_times[str(str(chat_id)+str(sender_id))] = time.time()
await client.run_until_disconnected()
# Gradio Inteface
inputs = []
output = "text"
gr.Interface(fn=main, inputs=inputs, outputs=output).launch()
# client.loop.run_until_complete(main())