q
<p>import websocket<br />
import json<br />
import requests<br />
import threading<br />
import time<br />
import datetime<br />
from datetime import timezone, timedelta<br />
import os<br />
from dotenv import load_dotenv</p>
<p>load_dotenv()</p>
<p>KANAL_ID = os.getenv("KANAL_ID")<br />
WEBHOOK_URL = os.getenv("WEBHOOK_URL")<br />
TOKEN = os.getenv("TOKEN")<br />
BOT_MESAJLARI_ILET = os.getenv("BOT_MESAJLARI_ILET", "False").lower() == "true"<br />
ETIKET_KONTROLU = os.getenv("ETIKET_KONTROLU", "True").lower() == "true"</p>
<p>processed_messages = set()<br />
message_count = 0 </p>
<p>def send_json_request(ws, request):<br />
ws.send(json.dumps(request))</p>
<p>def receive_json_response(ws):<br />
response = ws.recv()<br />
if response:<br />
return json.loads(response)</p>
<p>def heartbeat(interval, ws):<br />
while True:<br />
time.sleep(interval)<br />
heartbeatJSON = {"op": 1, "d": None}<br />
send_json_request(ws, heartbeatJSON)</p>
<p>def on_message(ws, message):<br />
global message_count<br />
message_data = json.loads(message)</p>
<p> if message_data.get("t") == "MESSAGE_CREATE":<br />
data = message_data.get("d", {})<br />
channel_id = data.get("channel_id")<br />
message_id = data.get("id")<br />
<br />
if message_id in processed_messages or channel_id != KANAL_ID:<br />
return<br />
<br />
processed_messages.add(message_id)<br />
if len(processed_messages) > 100:<br />
processed_messages.clear()</p>
<p> author = data.get("author", {}).get("username", "Bilinmeyen")<br />
author_id = data.get("author", {}).get("id", "Bilinmeyen")<br />
content = data.get("content", "").strip()</p>
<p> # Tarih formatı (GMT+3)<br />
timestamp = data.get("timestamp", "")<br />
utc_time = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%f%z")<br />
turkey_tz = timezone(timedelta(hours=3))<br />
local_time = utc_time.astimezone(turkey_tz)<br />
formatted_time = local_time.strftime("%d.%m.%Y %H:%M")</p>
<p> # Webhook mesajı oluştur<br />
formatted_message = f"**{author}** gönderdi:\n\n{content}\n\n"<br />
formatted_message += f"**Tarih**: {formatted_time}"</p>
<p> webhook_data = {"content": formatted_message, "username": author}<br />
<br />
try:<br />
requests.post(WEBHOOK_URL, json=webhook_data)<br />
message_count += 1<br />
print(f"İletilen mesaj sayısı: {message_count}")<br />
except Exception as e:<br />
print(f"Webhook hatası: {e}")</p>
<p>def on_error(ws, error):<br />
print(f"Hata: {error}")</p>
<p>def on_close(ws, close_status_code, close_msg):<br />
print("Bağlantı kapandı, yeniden bağlanıyor...")<br />
time.sleep(5)<br />
main()</p>
<p>def on_open(ws):<br />
payload = {<br />
'op': 2,<br />
"d": {<br />
"token": TOKEN,<br />
"properties": {<br />
"$os": "windows",<br />
"$browser": "chrome",<br />
"$device": "pc"<br />
}<br />
}<br />
}<br />
send_json_request(ws, payload)<br />
threading.Thread(target=heartbeat, args=(40, ws), daemon=True).start()</p>
<p>def main():<br />
ws = websocket.WebSocketApp(<br />
'wss://gateway.discord.gg/?v=9&encoding=json',<br />
on_message=on_message,<br />
on_error=on_error,<br />
on_close=on_close<br />
)<br />
ws.on_open = on_open<br />
ws.run_forever()</p>
<p>if __name__ == "__main__":<br />
print("Bot başlatılıyor...")<br />
while True:<br />
try:<br />
main()<br />
except Exception as e:<br />
print(f"Bağlantı hatası: {e}, yeniden deneniyor...")<br />
time.sleep(5)</p>