diff --git a/personal-chat-bot.py b/personal-chat-bot.py new file mode 100644 index 0000000..ebf7735 --- /dev/null +++ b/personal-chat-bot.py @@ -0,0 +1,95 @@ +import os +import requests +import base64 +from telegram import Update +from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes + +# Configuration +API_BASE_URL = "" +BEARER_TOKEN = "" # Replace with your actual token +TELEGRAM_TOKEN = "" # Replace with your bot token + +async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: + """Send a message when the command /start is issued.""" + chat_id = update.effective_chat.id + message_thread_id = update.effective_message.message_thread_id + await context.bot.send_message( + chat_id=chat_id, + message_thread_id=message_thread_id, + text='Hello! Send me an addon UUID to get information about it.' + ) + +async def handle_uuid(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: + """Handle received UUID and query the API.""" + uuid = update.message.text.strip() + chat_id = update.effective_chat.id + message_thread_id = update.effective_message.message_thread_id + + if not uuid: + await context.bot.send_message( + chat_id=chat_id, + message_thread_id=message_thread_id, + text="Please send a valid UUID." + ) + return + + try: + headers = {"Authorization": f"Bearer {BEARER_TOKEN}"} + response = requests.get(f"{API_BASE_URL}{uuid}", headers=headers) + response.raise_for_status() + data = response.json().get('data', {}) + + if data: + download_hashes = data.get('download_hash', '') + decoded_urls = [] + + if download_hashes: + for i, hash_part in enumerate(download_hashes.split(','), 1): + hash_part = hash_part.strip() + if hash_part: + try: + decoded = base64.b64decode(hash_part).decode('utf-8') + decoded_urls.append(f"{i}. {decoded}") + except: + decoded_urls.append(f"{i}. Invalid hash: {hash_part}") + + formatted_message = ( + f"UUID: {data.get('uuid', 'N/A')}\n" + f"Name: {data.get('name', 'N/A')}\n" + f"Creator: {data.get('creator', 'N/A')}\n" + f"Version: {data.get('version', 'N/A')}\n" + ) + + if decoded_urls: + formatted_message += "Download URLs:\n" + "\n".join(decoded_urls) + else: + formatted_message += "No download URLs found" + + await context.bot.send_message( + chat_id=chat_id, + message_thread_id=message_thread_id, + text=f"Addon Information:\n{formatted_message}" + ) + else: + await context.bot.send_message( + chat_id=chat_id, + message_thread_id=message_thread_id, + text="No information found for this UUID." + ) + + except Exception as e: + error_text = f"Error: {str(e)}" + await context.bot.send_message( + chat_id=chat_id, + message_thread_id=message_thread_id, + text=error_text + ) + +def main() -> None: + application = Application.builder().token(TELEGRAM_TOKEN).build() + application.add_handler(CommandHandler("start", start)) + application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_uuid)) + application.run_polling() + +if __name__ == '__main__': + main() \ No newline at end of file