| KivanC | 16 Ağustos 2026 23:39 | Deprem Socket Botu (2026) Temel Özellikler
Otomatik Bağlanma
Script açıldığı anda irc.deneme.com sunucusuna bağlanır, NickServ + Oper girişi yapar ve #sohbet kanalına girer.
Anlık Deprem Bildirimi
Kandilli + AFAD verilerini kullanarak Türkiye’deki depremleri takip eder.
Belirlediğiniz minimum büyüklüğün üzerindeki depremleri kanala otomatik yazar.
Komut Sistemi
Kanalda kullanılabilen komutlar mevcuttur.
Tekrar (Flood) Koruması
Aynı kişi 10 saniye içinde tekrar komut yazarsa bot cevap vermez. Spam engellenir.
Kalıcı Ayarlar
Minimum büyüklük ve açık/kapalı durumu bot kapanıp açılsa bile hatırlanır.
Hash Table Kullanımı
Görülen depremler hash table’da tutulduğu için aynı deprem birden fazla kez bildirilmez (çok hızlı kontrol).
Teknik Detaylar
Bağlantı: Saf sockopen (IRC + API)
Veri Kaynağı: api.orhanaydogdu.com.tr (Kandilli + AFAD birleşik)
Tekrar Engelleme: Hash table (deprem.seen)
Komut Koruması: Kullanıcı bazlı 10 saniyelik bekleme
Renk Sistemi:
3.0–3.9 → Yeşil
4.0–4.9 → Turuncu
5.0+ → Kırmızı + özel uyarı yazısı
Flood Koruması: Hem komutlarda hem otomatik bildirimlerde mevcut
Nasıl Çalıştırılır?
Kodu mIRC’e yükle.
Scripti kaydet ve mIRC’i yeniden başlat (veya /load -rs deprem.mrc yaz).
Bot otomatik olarak bağlanır ve #sohbet kanalına girer.
İstersen bir sonraki adımda şunları da ekleyebilirim:
Derinlik ve koordinat bilgisi
Şehir filtresi (!deprem on 3 izmir)
Log tutma
Daha detaylı !deprem yardim komutu HTML-Kodu:
;=====================================================
; DEPREM SOCKET BOT v4.1
; Saf Socket + Hash Table + Komut Flood Koruması
;=====================================================
on *:start:{
hmake deprem.seen 5000
hmake deprem.ayar 30
hmake deprem.flood 100
if ($isfile(deprem.seen.db)) hload deprem.seen deprem.seen.db
if ($isfile(deprem.ayar.db)) hload deprem.ayar deprem.ayar.db
if (!$hget(deprem.ayar,minmag)) hadd deprem.ayar minmag 3.0
if (!$hget(deprem.ayar,aktif)) hadd deprem.ayar aktif 1
deprem baglan
}
on *:exit:{
hsave -i deprem.seen deprem.seen.db
hsave -i deprem.ayar deprem.ayar.db
}
alias deprem {
if ($1 == baglan) {
sockclose deprem
sockopen deprem irc.deneme.com 6667
echo -s [Deprem] Bağlanılıyor...
}
if ($1 == kapat) {
sockclose deprem
sockclose afad*
.timer depremcheck off
echo -s [Deprem] Kapatıldı.
}
}
on *:sockopen:deprem:{
if ($sockerr) {
echo -s Bağlantı hatası, 15 saniye sonra tekrar...
.timer 1 15 deprem baglan
return
}
sockwrite -n deprem NICK Deprem
sockwrite -n deprem USER Deprem 0 * :Türkiye Anlık Deprem Botu
}
on *:sockread:deprem:{
if ($sockerr) { deprem baglan | return }
var %data
sockread %data
tokenize 32 %data
if ($1 == PING) {
sockwrite -n deprem PONG $2
return
}
if ($2 == 001) {
sockwrite -n deprem PRIVMSG NickServ :IDENTIFY deneme123
.timer 1 1 sockwrite -n deprem OPER Deprem deneme123
.timer 1 2 sockwrite -n deprem OPER deneme123
.timer 1 3 sockwrite -n deprem JOIN #sohbet
echo -s [Deprem] #sohbet kanalına girildi.
.timer depremcheck 0 40 deprem.otomatik
}
if ($2 == 433) {
sockwrite -n deprem NICK Deprem $+ $rand(10,99)
}
; ==================== KOMUTLAR + TEKRAR KORUMASI ====================
if ($2 == PRIVMSG) && ($3 == #sohbet) {
var %nick = $remove($1,$chr(58))
var %text = $remove($4-,$chr(1))
var %cmd = $gettok(%text,1,32)
var %p1 = $gettok(%text,2,32)
var %p2 = $gettok(%text,3,32)
; Sadece !deprem ile başlayan komutlarda koruma uygula
if (%cmd != !deprem) return
; === TEKRAR KORUMASI ===
var %son = $hget(deprem.flood,%nick)
if (%son) && ($calc($ctime - %son) < 10) {
; 10 saniye dolmadan tekrar yazılmış → yok say
return
}
; Korumayı güncelle
hadd -m deprem.flood %nick $ctime
; 30 saniye sonra temizle
.timer 1 30 hdel deprem.flood %nick
; ---------------- Komutlar ----------------
if (%text == !deprem) {
deprem.api komut 1
return
}
if (%cmd == !deprem) && (%p1 == son) {
var %adet = $iif(%p2 isnum && %p2 >= 1 && %p2 <= 8,%p2,5)
deprem.api liste %adet
return
}
if (%cmd == !deprem) && (%p1 == on) {
if (%p2 isnum) && (%p2 >= 1.5) && (%p2 <= 8.0) {
hadd deprem.ayar minmag %p2
hadd deprem.ayar aktif 1
sockwrite -n deprem PRIVMSG #sohbet :Bildirimler açıldı. Minimum şiddet: $+ %p2 $+
}
else {
sockwrite -n deprem PRIVMSG #sohbet :Kullanım: !deprem on 3
}
return
}
if (%text == !deprem off) {
hadd deprem.ayar aktif 0
sockwrite -n deprem PRIVMSG #sohbet :Otomatik bildirimler kapatıldı.
return
}
if (%text == !deprem durum) {
var %durum = $iif($hget(deprem.ayar,aktif) == 1,Açık,Kapalı)
sockwrite -n deprem PRIVMSG #sohbet :Durum: $+ %durum $+ | Minimum: $+ $hget(deprem.ayar,minmag) $+
return
}
}
}
;=====================================================
; OTOMATİK KONTROL
;=====================================================
alias deprem.otomatik {
if (!$sock(deprem)) return
if ($hget(deprem.ayar,aktif) != 1) return
deprem.api otomatik 1
}
;=====================================================
; API
;=====================================================
alias deprem.api {
var %tip = $1
var %adet = $iif($2,$2,1)
var %sid = $ticks $+ $rand(100,999)
sockclose afad $+ %sid
sockopen afad $+ %sid api.orhanaydogdu.com.tr 443
sockmark afad $+ %sid %tip %adet 0
}
on *:sockopen:afad*:{
if ($sockerr) return
sockwrite -n $sockname GET /deprem HTTP/1.1
sockwrite -n $sockname Host: api.orhanaydogdu.com.tr
sockwrite -n $sockname User-Agent: DepremBot/4.1
sockwrite -n $sockname Connection: close
sockwrite -n $sockname $crlf
}
on *:sockread:afad*:{
if ($sockerr) return
var %line
sockread %line
if (*"earthquake_id"* iswm %line) && (*"mag"* iswm %line) {
var %id = $gettok($gettok(%line,2,34),1,34)
if ($hget(deprem.seen,%id)) return
hadd -m deprem.seen %id 1
var %mag = $gettok($remove($gettok(%line,2,58),$chr(44)),1,32)
if (%mag !isnum) return
var %title = $gettok($gettok(%line,4,34),1,34)
if (!$title) %title = Bilinmeyen Yer
var %saat = $gettok($gettok(%line,6,34),1,34)
var %tip = $gettok($sock($sockname).mark,1,32)
var %adet = $gettok($sock($sockname).mark,2,32)
var %say = $gettok($sock($sockname).mark,3,32)
var %min = $hget(deprem.ayar,minmag)
var %renk = 03
if (%mag >= 5.0) %renk = 04
elseif (%mag >= 4.0) %renk = 07
elseif (%mag >= 3.0) %renk = 08
var %mesaj = $chr(3) $+ %renk $+ ⚠️ DEPREM $chr(15) $chr(3) $+ %renk $+ $round(%mag,1) $+ $chr(15) | %title | %saat
if (%mag >= 5.0) {
%mesaj = $chr(3) $+ 04 $+ !!! YÜKSEK ŞİDDETLİ DEPREM !!! $chr(15) %mesaj
}
if (%tip == otomatik) {
if (%mag >= %min) {
sockwrite -n deprem PRIVMSG #sohbet :%mesaj
}
}
elseif (%tip == komut) {
sockwrite -n deprem PRIVMSG #sohbet :%mesaj
sockclose $sockname
}
elseif (%tip == liste) {
inc %say
sockmark $sockname %tip %adet %say
sockwrite -n deprem PRIVMSG #sohbet : $+ %say $+ . %mesaj
if (%say >= %adet) sockclose $sockname
}
}
} |