aa
<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 # Toplam iletilen mesaj sayısı</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)<br />
<br />
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 />
is_bot = data.get("author", {}).get("bot", False)<br />
if is_bot and not BOT_MESAJLARI_ILET:<br />
return<br />
<br />
if message_id in processed_messages or channel_id != KANAL_ID:<br />
return<br />
<br />
content = data.get("content", "").strip()<br />
attachments = data.get("attachments", [])<br />
referenced_message = data.get("referenced_message")<br />
<br />
if ETIKET_KONTROLU:<br />
content = content.replace("@everyone", "`@everyone`")<br />
content = content.replace("@here", "`@here`")<br />
<br />
if not content and not attachments:<br />
return<br />
<br />
processed_messages.add(message_id)<br />
if len(processed_messages) > 100:<br />
processed_messages.clear()<br />
<br />
author = data.get("author", {}).get("username", "Bilinmeyen")<br />
author_id = data.get("author", {}).get("id", "Bilinmeyen")<br />
<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")<br />
<br />
formatted_message = "**Mesaj İçeriği: **\n\n"<br />
<br />
if referenced_message:<br />
ref_author = referenced_message.get("author", {}).get("username", "Bilinmeyen")<br />
ref_author_id = referenced_message.get("author", {}).get("id", "Bilinmeyen")<br />
ref_content = referenced_message.get("content", "").strip()<br />
formatted_message += f"**Yanıtlanan Mesaj**:\n {ref_content}\n\n"<br />
formatted_message += f"**Yanıtlanan Kişi**: <@{ref_author_id}>\n\n"<br />
formatted_message += f"**Yanıt**:\n{content}\n"<br />
else:<br />
formatted_message += f"{content}\n"<br />
<br />
if attachments:<br />
for attachment in attachments:<br />
formatted_message += f"{attachment.get('url')}\n"<br />
<br />
formatted_message += "\n**Mesaj Bilgisi**:\n"<br />
formatted_message += f"**Yazar**: <@{author_id}>\n"<br />
formatted_message += f"**Tarih**: {formatted_time}\n"<br />
formatted_message += f"**Kanal**: <#{KANAL_ID}>\n"<br />
formatted_message += f"**Gönderilme**: <t:{int(time.time())}:R>"<br />
<br />
avatar_url = data.get("author", {}).get("avatar")<br />
if avatar_url:<br />
avatar_url = f"https://cdn.discordapp.com/avatars/{author_id}/{avatar_url}?size=1024"<br />
<br />
webhook_data = {"content": formatted_message, "username": author, "avatar_url": avatar_url}<br />
<br />
try:<br />
requests.post(WEBHOOK_URL, json=webhook_data)<br />
message_count += 1<br />
print(f"Toplam iletilen mesaj: {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)<br />
</p>