Kanhshsh commited on
Commit
e77b868
Β·
verified Β·
1 Parent(s): 88073a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -31
app.py CHANGED
@@ -1,42 +1,71 @@
 
1
  import gradio as gr
2
- import subprocess
3
- import threading
 
 
 
4
 
5
- logs = ""
 
 
 
6
 
7
- def run_bot():
8
- global logs
9
- process = subprocess.Popen(
10
- ["python3", "bot.py"],
11
- stdout=subprocess.PIPE,
12
- stderr=subprocess.STDOUT,
13
- text=True,
14
- bufsize=1
15
- )
16
- for line in process.stdout:
17
- logs += line
18
 
19
- # Start the bot in a background thread
20
- threading.Thread(target=run_bot, daemon=True).start()
21
 
22
- def launch_bot():
23
- return "βœ… Bot launched successfully."
 
 
24
 
25
- def get_logs():
26
- return logs[-2000:]
27
 
28
- with gr.Blocks() as demo:
29
- gr.Markdown("# 🎬 TheMovieProviderBot Interface")
30
- gr.Markdown("Interact with the bot on Telegram.")
31
- gr.Markdown("[πŸ“¦ Click here to download bot files](static/setup.zip)")
 
 
 
 
 
 
 
 
 
32
 
33
- with gr.Row():
34
- launch_btn = gr.Button("πŸš€ Start Bot")
35
- refresh_btn = gr.Button("πŸ” Refresh Logs")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
- log_output = gr.Textbox(label="πŸ“„ Bot Logs", lines=20)
 
38
 
39
- launch_btn.click(fn=launch_bot, outputs=None)
40
- refresh_btn.click(fn=get_logs, outputs=log_output)
41
 
42
- demo.launch()
 
 
 
 
1
+ import os
2
  import gradio as gr
3
+ import asyncio
4
+ import logging
5
+ from pyrogram import Client, filters
6
+ from threading import Thread
7
+ from io import StringIO
8
 
9
+ # ---------- CONFIGURATION ----------
10
+ API_ID = int(os.environ.get("API_ID", "6")) # replace with real values
11
+ API_HASH = os.environ.get("API_HASH", "eb06d4abfb49dc3eeb1aeb98ae0f581e")
12
+ BOT_TOKEN = os.environ.get("BOT_TOKEN", "7510817339:AAHFZoFzPkUO_-nAwfh9bjY_qHsWMprM2PI")
13
 
14
+ # ---------- LOGGING SETUP ----------
15
+ log_stream = StringIO()
16
+ logging.basicConfig(level=logging.INFO, stream=log_stream, format="%(asctime)s - %(message)s")
17
+ logger = logging.getLogger()
 
 
 
 
 
 
 
18
 
19
+ # ---------- TELEGRAM BOT SETUP ----------
20
+ app = Client("simple_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)
21
 
22
+ @app.on_message(filters.command("start") & filters.private)
23
+ async def start(client, message):
24
+ await message.reply("hi")
25
+ logger.info(f"Replied to /start from: {message.from_user.id}")
26
 
27
+ # ---------- CONTROL ----------
28
+ bot_thread = None
29
 
30
+ def start_bot():
31
+ global bot_thread
32
+
33
+ if bot_thread and bot_thread.is_alive():
34
+ return "Bot is already running."
35
+
36
+ def run():
37
+ logger.info("Bot started.")
38
+ app.run()
39
+
40
+ bot_thread = Thread(target=run)
41
+ bot_thread.start()
42
+ return "βœ… Bot started."
43
 
44
+ def stop_bot():
45
+ try:
46
+ app.stop()
47
+ logger.info("Bot stopped.")
48
+ return "πŸ›‘ Bot stopped."
49
+ except Exception as e:
50
+ logger.error(f"Error stopping bot: {e}")
51
+ return f"❌ Error: {e}"
52
+
53
+ def show_logs():
54
+ return log_stream.getvalue()[-20000:] # show last 20,000 characters
55
+
56
+ # ---------- GRADIO UI ----------
57
+ with gr.Blocks() as demo:
58
+ gr.Markdown("## πŸ€– Telegram Bot Control Panel")
59
+ start_btn = gr.Button("πŸš€ Start Bot")
60
+ stop_btn = gr.Button("πŸ›‘ Stop Bot")
61
+ logs_box = gr.Textbox(label="πŸ“œ Logs", lines=20)
62
 
63
+ start_btn.click(fn=start_bot, outputs=logs_box)
64
+ stop_btn.click(fn=stop_bot, outputs=logs_box)
65
 
66
+ gr.Button("πŸ”„ Refresh Logs").click(fn=show_logs, outputs=logs_box)
 
67
 
68
+ # ---------- RUN GRADIO ----------
69
+ if __name__ == "__main__":
70
+ demo.launch()
71
+