Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import json
- from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
- from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, CallbackQueryHandler
- # Obtener los datos desde la URL del JSON (usando la URL raw de GitHub)
- url = "https://raw.githubusercontent.com/Te-k/telegram-transparency/main/dataset.json"
- response = requests.get(url)
- data = response.json()
- # Diccionario de códigos de país Alfa-3 a nombres completos
- country_codes = {
- "FRA": "Francia",
- "USA": "Estados Unidos",
- "NLD": "Países Bajos",
- "DEU": "Alemania",
- "ROU": "Rumania",
- "POL": "Polonia",
- "ITA": "Italia",
- "ESP": "España",
- "GBR": "Reino Unido",
- "SVK": "Eslovaquia",
- "CZE": "República Checa",
- "BEL": "Bélgica",
- "CAN": "Canadá",
- "UKR": "Ucrania",
- "COL": "Colombia",
- "URY": "Uruguay",
- "GEO": "Georgia",
- "EGY": "Egipto",
- "SWE": "Suecia",
- "CHE": "Suiza",
- "ARG": "Argentina",
- "AUT": "Austria",
- "ISR": "Israel",
- "IRL": "Irlanda",
- "SVN": "Eslovenia",
- "IND": "India",
- "CHL": "Chile",
- "NOR": "Noruega",
- "NZL": "Nueva Zelanda",
- "GTM": "Guatemala",
- "RUS": "Rusia",
- "PRT": "Portugal",
- "BGR": "Bulgaria",
- "DNK": "Dinamarca",
- "PHL": "Filipinas",
- "IDN": "Indonesia",
- "MYS": "Malasia",
- "MEX": "México",
- "CRI": "Costa Rica",
- "BRA": "Brasil",
- "ARE": "Emiratos Árabes Unidos",
- "UZB": "Uzbekistán",
- "EST": "Estonia",
- "NGA": "Nigeria",
- "SRB": "Serbia",
- "KAZ": "Kazajistán",
- "THA": "Tailandia",
- "LAO": "Laos",
- "ARM": "Armenia",
- "TUR": "Turquía",
- "MLT": "Malta",
- "BLR": "Bielorrusia",
- "LTU": "Lituania",
- "BIH": "Bosnia y Herzegovina",
- "LVA": "Letonia",
- "HRV": "Croacia",
- "KGZ": "Kirguistán",
- "AUS": "Australia",
- "FIN": "Finlandia",
- "HUN": "Hungría",
- "CYP": "Chipre",
- "MNE": "Montenegro",
- "JPN": "Japón",
- "GRC": "Grecia",
- "LBY": "Libia",
- "KOR": "Corea del Sur",
- "NER": "Níger",
- "GRL": "Groenlandia",
- "COK": "Islas Cook",
- "MRT": "Mauritania",
- "BGD": "Bangladés",
- "SLV": "El Salvador",
- "CHN": "China",
- "MDA": "Moldavia",
- "ISL": "Islandia",
- "SGP": "Singapur",
- "ETH": "Etiopía"
- }
- # Función para formatear los datos de un país en un mensaje legible
- def format_country_data(country_code, country_data):
- country_name = country_codes.get(country_code, country_code) # Obtener el nombre del país
- message = f"📊 **Transparency Report for {country_name}**\n\n"
- for entry in country_data:
- date_range = f"{entry['from']} to {entry['to']}"
- requests_count = entry['requests']
- users_count = entry['users']
- message += f"📅 **Period:** {date_range}\n"
- message += f"📨 **Requests:** {requests_count}\n"
- message += f"👤 **Users:** {users_count}\n"
- message += "----------------------------------------\n"
- return message
- # Comando para manejar el '/start'
- async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
- # Mensaje de bienvenida
- welcome_message = (
- "¡Hola! 👋\n\n"
- "Soy un bot diseñado para mostrarte los informes de transparencia de Telegram. "
- "Usa el comando /report para seleccionar un país y obtener los datos más recientes.\n\n"
- "¡Espero que te sea útil! 😊"
- )
- await update.message.reply_text(welcome_message)
- # Comando para manejar el '/report'
- async def report(update: Update, context: ContextTypes.DEFAULT_TYPE):
- # Crear botones para cada país
- keyboard = []
- for country_code in data.keys():
- country_name = country_codes.get(country_code, country_code) # Obtener el nombre del país
- keyboard.append([InlineKeyboardButton(country_name, callback_data=country_code)]) # Solo mostrar el nombre
- reply_markup = InlineKeyboardMarkup(keyboard)
- # Enviar el mensaje con los botones
- await update.message.reply_text("Selecciona un país para ver su reporte:", reply_markup=reply_markup)
- # Manejador para los botones de selección de país
- async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
- query = update.callback_query
- country_code = query.data
- # Obtener los datos del país seleccionado
- country_data = data.get(country_code, [])
- if country_data:
- # Formatear los datos del país
- formatted_message = format_country_data(country_code, country_data)
- await query.edit_message_text(formatted_message, parse_mode='Markdown')
- else:
- await query.edit_message_text(f"No hay datos disponibles para {country_code}.")
- # Función principal para ejecutar el bot
- def main():
- app = ApplicationBuilder().token("6485736942:AQUIELTOKENDETUBOT").build()
- app.add_handler(CommandHandler("start", start))
- app.add_handler(CommandHandler("report", report))
- app.add_handler(CallbackQueryHandler(button_handler))
- app.run_polling()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment