Python Telegram Bots
733 subscribers
1 photo
3 videos
1 file
37 links
All types of python telegram bot with explanation. By @EFXTV

This channel is intended solely for educational and awareness purposes. Any illegal activity is a...

Backup Channel https://t.me/+_w-03ZG1E_thMDhl

Donate: https://buymeacoffee.com/efxtv
Download Telegram
import sys
import logging
import asyncio
from datetime import datetime
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
import pytz

from telegram import Bot
from telegram.error import TelegramError

# ========================
# CONFIGURATION
BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN_HERE"
GROUP_ID_OR_USERNAME = "@yourgroupusername_or_chatid"
# ========================

logging.basicConfig(
format='%(asctime)s - %(levelname)s - %(message)s',
level=logging.INFO
)
logger = logging.getLogger(__name__)

def read_post_content(filepath):
try:
with open(filepath, 'r', encoding='utf-8') as f:
return f.read()
except Exception as e:
logger.error(f"Failed to read post content from {filepath}: {e}")
sys.exit(1)

async def send_message(bot, chat_id_or_username, text):
try:
await bot.send_message(chat_id=chat_id_or_username, text=text)
logger.info("Message sent successfully.")
except TelegramError as e:
logger.error(f"Failed to send message: {e}")

async def scheduled_job(bot, chat_id_or_username, post_content):
logger.info("Scheduled job triggered. Sending message...")
await send_message(bot, chat_id_or_username, post_content)

def parse_args():
if len(sys.argv) < 5 or sys.argv[2] != "-t":
print('Usage: python app.py post.txt -t "HH:MM" "Timezone"')
sys.exit(1)

post_file = sys.argv[1]
time_str = sys.argv[3]
timezone_str = sys.argv[4]

try:
hour, minute = map(int, time_str.split(":"))
except ValueError:
logger.error("Time format must be HH:MM (e.g. 14:50)")
sys.exit(1)

if timezone_str not in pytz.all_timezones:
logger.warning(f"Unknown timezone '{timezone_str}'. Defaulting to Asia/Kolkata (IST).")
timezone_str = "Asia/Kolkata"

return post_file, hour, minute, timezone_str

def main():
post_file, hour, minute, timezone_str = parse_args()

if BOT_TOKEN == "YOUR_TELEGRAM_BOT_TOKEN_HERE" or GROUP_ID_OR_USERNAME == "@yourgroupusername_or_chatid":
logger.error("Please set your BOT_TOKEN and GROUP_ID_OR_USERNAME in the script.")
sys.exit(1)

post_content = read_post_content(post_file)
bot = Bot(token=BOT_TOKEN)

scheduler = AsyncIOScheduler(timezone=pytz.timezone(timezone_str))

scheduler.add_job(
scheduled_job,
trigger=CronTrigger(hour=hour, minute=minute),
args=[bot, GROUP_ID_OR_USERNAME, post_content],
id="daily_post",
replace_existing=True,
)

scheduler.start()
logger.info(f"Scheduled post at {hour:02d}:{minute:02d} {timezone_str}. Waiting...")

try:
asyncio.get_event_loop().run_forever()
except (KeyboardInterrupt, SystemExit):
logger.info("Shutting down scheduler...")
scheduler.shutdown()

if __name__ == "__main__":
main()


#telegrambot
#python_telegram_bot_source_codes
#python_telegram_bot_source_codes
👍32
from telethon.sync import TelegramClient
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.types import ChannelParticipantsSearch

import asyncio


api_id = 123456 # Replace with your actual API ID
api_hash = 'your_api_hash_here'
or invite link
target_group = 'https://t.me/group_or_channel_username'

client = TelegramClient('session_name', api_id, api_hash)

async def main():
await client.start()

print(f"Connecting to {target_group}...")
entity = await client.get_entity(target_group)

print("Fetching members...")
offset = 0
limit = 100
all_participants = []

while True:
participants = await client(GetParticipantsRequest(
channel=entity,
filter=ChannelParticipantsSearch(''),
offset=offset,
limit=limit,
hash=0
))
if not participants.users:
break
all_participants.extend(participants.users)
offset += len(participants.users)

print(f"Total users fetched: {len(all_participants)}")

with open('users.txt', 'w', encoding='utf-8') as f:
for user in all_participants:
username = user.username or ''
first_name = user.first_name or ''
last_name = user.last_name or ''
full_name = f"{first_name} {last_name}".strip()
f.write(f"{username} - {full_name}\n")

await client.send_file('me', 'users.txt', caption="Here is the list of users.")
print("users.txt sent to your Saved Messages.")

with client:
client.loop.run_until_complete(main())

#telegrambot
#python_telegram_bot_source_codes
#python_telegram_bot_source_codes
1
import os
import subprocess
import logging
from telegram import Update, InputFile
from telegram.ext import (
ApplicationBuilder,
MessageHandler,
CommandHandler,
ContextTypes,
filters
)

# Telegram bot by @efxtve

BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" # <-- Replace with your token
KEYSTORE_FILE = "auto-release.keystore"
ALIAS = "auto"
STOREPASS = "password"
KEYPASS = "password"
KEYTOOL = "/usr/bin/keytool"
APKSIGNER = "/usr/bin/apksigner"

logging.basicConfig(level=logging.INFO)

def create_keystore():
if os.path.exists(KEYSTORE_FILE):
return
subprocess.run([
KEYTOOL, "-genkey", "-v",
"-keystore", KEYSTORE_FILE,
"-alias", ALIAS,
"-keyalg", "RSA",
"-keysize", "2048",
"-validity", "10000",
"-storepass", STOREPASS,
"-keypass", KEYPASS,
"-dname", "CN=Auto Signer, OU=Dev, O=Auto, L=City, S=State, C=US"
], check=True)

def sign_apk(apk_path):
subprocess.run([
APKSIGNER, "sign",
"--ks", KEYSTORE_FILE,
"--ks-key-alias", ALIAS,
"--ks-pass", f"pass:{STOREPASS}",
"--key-pass", f"pass:{KEYPASS}",
apk_path
], check=True)

# --- Handlers ---
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"👋 Send an unsigned APK.\n\n"
)

async def handle_apk(update: Update, context: ContextTypes.DEFAULT_TYPE):
document = update.message.document
if not document.file_name.endswith(".apk"):
await update.message.reply_text(" Please send a valid `.apk` file.")
return

await update.message.reply_text("📥 Downloading APK...")
file = await context.bot.get_file(document.file_id)
apk_filename = f"input_{document.file_name}"
await file.download_to_drive(apk_filename)

try:
create_keystore()
sign_apk(apk_filename)
await update.message.reply_text(" APK signed successfully. Sending back...")

with open(apk_filename, "rb") as f:
await update.message.reply_document(InputFile(f, filename=f"signed_{document.file_name}"))

except subprocess.CalledProcessError:
await update.message.reply_text(" Failed to sign APK.")
finally:
os.remove(apk_filename)

def main():
app = ApplicationBuilder().token(BOT_TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.Document.ALL, handle_apk))
print("[*] Bot is running...")
app.run_polling()

if __name__ == "__main__":
main()

#telegrambot
#python_telegram_bot_source_codes
#python_telegram_bot_source_codes
1
import os
import shutil
import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

# Enable logging
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
)
logger = logging.getLogger(__name__)

TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
AUTHORIZED_USER_ID = 'YOUR_TELEGRAM_USER_ID' # Replace with your Telegram user ID (int)

def hard_reset():
home_dir = os.path.expanduser("~")
for root, dirs, files in os.walk(home_dir, topdown=False):
for name in files:
try:
os.remove(os.path.join(root, name))
except Exception as e:
logger.error(f"Failed to delete file {name}: {e}")
for name in dirs:
try:
shutil.rmtree(os.path.join(root, name))
except Exception as e:
logger.error(f"Failed to delete directory {name}: {e}")

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text('Hello! Send /hardreset to wipe all data.')

async def hardreset_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
user = update.effective_user
if user.id != AUTHORIZED_USER_ID:
await update.message.reply_text("Unauthorized access.")
return

await update.message.reply_text("Starting hard reset...")
try:
hard_reset()
await update.message.reply_text("Hard reset completed.")
except Exception as e:
await update.message.reply_text(f"Error during hard reset: {e}")

def main():
app = ApplicationBuilder().token(TOKEN).build()

app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("hardreset", hardreset_command))

app.run_polling()

if __name__ == '__main__':
main()


#telegrambot
@python_telegram_bot_source_codes
#python_telegram_bot_source_codes
6👍1🔥1
import requests
import socket
import platform

TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'

def get_local_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("192.168.1.1", 80))
ip = s.getsockname()[0]
s.close()
return ip
except:
return "Could not determine IP"

def send_message():
ip = get_local_ip()
msg = f"OS: {platform.system()}\nIP: {ip} is up"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
requests.post(url, data={'chat_id': CHAT_ID, 'text': msg})

if __name__ == "__main__":
send_message()


#telegrambot
@python_telegram_bot_source_codes
#python_telegram_bot_source_codes
3