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
}
}
}