working
This commit is contained in:
5
.env.example
Normal file
5
.env.example
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
API_ID=
|
||||||
|
API_HASH=
|
||||||
|
CHAT_ID=
|
||||||
|
WEB_USERNAME=changeme
|
||||||
|
WEB_PASSWORD=changeme
|
||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
listen.session
|
||||||
113
listen.py
Normal file
113
listen.py
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from pyrogram import Client, filters
|
||||||
|
from flask import Flask, render_template_string, request, Response
|
||||||
|
|
||||||
|
# Load environment variables from .env file
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
# Get the API ID, API Hash, and Chat ID from the .env file
|
||||||
|
api_id = os.getenv("API_ID")
|
||||||
|
api_hash = os.getenv("API_HASH")
|
||||||
|
chat_id = int(os.getenv("CHAT_ID"))
|
||||||
|
web_username = os.getenv("WEB_USERNAME")
|
||||||
|
web_password = os.getenv("WEB_PASSWORD")
|
||||||
|
|
||||||
|
# Create a Pyrogram Client
|
||||||
|
app = Client("listen", api_id=api_id, api_hash=api_hash)
|
||||||
|
|
||||||
|
# Create a Flask app
|
||||||
|
flask_app = Flask(__name__)
|
||||||
|
|
||||||
|
# Store messages in a list
|
||||||
|
messages = []
|
||||||
|
|
||||||
|
# Define a message handler for the specific chat
|
||||||
|
@app.on_message(filters.chat(chat_id))
|
||||||
|
def handle_message(client, message):
|
||||||
|
# Check if the message contains the specific string
|
||||||
|
if "[SIM2(Dhiraagu) Receive SMS]" in message.text:
|
||||||
|
# Replace newlines with <br> tags for HTML rendering
|
||||||
|
formatted_message = message.text.replace("\n", "<br>")
|
||||||
|
# Add the formatted message to the list
|
||||||
|
messages.append(formatted_message)
|
||||||
|
# Keep only the last 50 messages (optional)
|
||||||
|
if len(messages) > 50:
|
||||||
|
messages.pop(0)
|
||||||
|
|
||||||
|
# Basic authentication decorator
|
||||||
|
def check_auth(username, password):
|
||||||
|
return username == web_username and password == web_password
|
||||||
|
|
||||||
|
def authenticate():
|
||||||
|
return Response(
|
||||||
|
"Unauthorized. Please log in.", 401,
|
||||||
|
{"WWW-Authenticate": 'Basic realm="Login Required"'}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Flask route to display messages
|
||||||
|
@flask_app.route("/")
|
||||||
|
def index():
|
||||||
|
auth = request.authorization
|
||||||
|
if not auth or not check_auth(auth.username, auth.password):
|
||||||
|
return authenticate()
|
||||||
|
return render_template_string("""
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Telegram Messages</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
background-color: #f0f2f5;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.messages-container {
|
||||||
|
width: 90%;
|
||||||
|
max-width: 600px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||||
|
padding: 20px;
|
||||||
|
overflow-y: auto;
|
||||||
|
max-height: 80vh;
|
||||||
|
}
|
||||||
|
.message {
|
||||||
|
background-color: #e9ecef;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
.message:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="messages-container">
|
||||||
|
{% for message in messages %}
|
||||||
|
<div class="message">{{ message | safe }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
""", messages=messages)
|
||||||
|
|
||||||
|
# Run the Flask app and Pyrogram client
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import threading
|
||||||
|
# Start the Flask app in a separate thread
|
||||||
|
flask_thread = threading.Thread(target=lambda: flask_app.run(host="0.0.0.0", port=5000))
|
||||||
|
flask_thread.daemon = True
|
||||||
|
flask_thread.start()
|
||||||
|
|
||||||
|
# Start the Pyrogram client
|
||||||
|
print(f"Listening to chat ID {chat_id} and filtering for '[SIM2(Dhiraagu) Receive SMS]'...")
|
||||||
|
app.run()
|
||||||
0
requirements.txt
Normal file
0
requirements.txt
Normal file
Reference in New Issue
Block a user