import requests, re, random, datetime, pytz, sqlite3, os
from dotenv import load_dotenv
from telegram import ChatMemberUpdated
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, ContextTypes, filters, ChatMemberHandler
from datetime import datetime
from pytz import timezone
# Configurações
load_dotenv()
TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')
if not TOKEN:
raise ValueError("Token não encontrado! Verifique seu arquivo .env")
CMC_API_KEY = os.getenv('CMC_API_KEY')
username_admin = ["XXXX"]
DB_FILE = os.getenv('DB_FILE')
##DBASE FILE init connection
def init_db():
conn = sqlite3.connect(
'grupo_cripto_logs.db',
detect_types=sqlite3.PARSE_DECLTYPES
)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS user_activity (
user_id INTEGER,
username TEXT,
first_name TEXT,
last_name TEXT,
action TEXT, -- "join" ou "leave"
timestamp datetime
)
''')
conn.commit()
conn.close()
##TRACK MEMBERS FUNCTION
async def track_members(update: ChatMemberUpdated, context: ContextTypes.DEFAULT_TYPE):
try:
print(f"\n
user = update.new_chat_member.user if update.new_chat_member else
update.old_chat_member.user
print(f"Usuário envolvido: ID={user.id}, Nome={user.full_name}")
if update.new_chat_member and update.new_chat_member.status == 'member':
action = "join"
print("
elif update.old_chat_member and update.old_chat_member.status in ['left', 'kicked']:
action = "leave"
print("
else:
print("
return
with sqlite3.connect('grupo_cripto_logs.db', detect_types=sqlite3.PARSE_DECLTYPES) as conn:
cursor = conn.cursor()
cursor.execute('''
INSERT INTO user_activity VALUES (?, ?, ?, ?, ?, ?)
''', (
user.id,
user.username,
user.first_name,
user.last_name,
action,
datetime.now()
))
conn.commit()
print(f"
except Exception as e:
print(f"
await context.bot.send_message(
chat_id=chat_ids_alertas[0],
text=f"Erro no tracking: {str(e)}"
)
##Handler
if __name__ == '__main__':
init_db()
app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(ChatMemberHandler(track_members, ChatMemberHandler.CHAT_MEMBER))
< /code>
Ich versuche, das Protokoll von Benutzern zu speichern, die sich anschließen und meine Gruppe verlassen. Überprüfen Sie nach einem Muster von IDs, das diesen Bots zugeordnet werden kann, und verbieten Sie sie aus meiner Gruppe.>