support.tcl

support.tcl

TCL script in german language and is designed to work for support and help channels. Commands: !support, !answer, !finish, !done, !clear, !msg

Postat de Copyright Categorie Review user Vizualizari Data
btc kNocA protections Cod netestat 382 2023-12-25 12:11:22

#######################################################
### Settings ##########################################
#######################################################

set ver 0.001
set support(chan) "#SP-Chan"
set support(ichan) "#SP-Chan"




#######################################################
### Bindings ##########################################
#######################################################

bind pub - !support support:support
bind msg - !support support:support2
bind pub - !supports support:supports
bind pub - !answer support:answer
bind pub - !finish support:finish
bind pub - !done support:finish
bind msg - !done support:msg:finish
bind pub - !clear support:clear
bind pub - !msg support:msg
bind msgm - * support:msgm
bind nick - * support:nickchange
bind mode - * support:mode

bind pub H !flags support:flags
bind pub H !mode support:mode2
bind pub H !help support:help

bind pub - + support:system
bind pub - - support:system2



#######################################################
### Script ############################################
#######################################################
proc support:support {nick host hand chan arg} {
	support:support2 ($nick $host $hand $arg)
}

proc support:support2 {nick host hand arg} {
	global support frage sucht:support versuch

	if {$arg == ""} { putquick "NOTICE $nick :\[ Bitte stelle deine Support-Frage mit !support <Frage> \]"; return }

	if {![info exists support(queue)]} {
		set support(queue) ""
	}

	if {[lsearch $support(queue) $nick] < 0} {
		lappend support(queue) $nick
		set time [clock format [unixtime] -format %H:%M]
		set frage($nick) "\[$time\] $arg"

		set sucht:support($nick) "yes"
		set versuch($nick) 0
		set ::autoanswers($nick) 1
		putserv "PRIVMSG $nick :\[ Willkommen im #SP-Chan Auto-Support \]:::\[ Bitte Auswahl eintippen! \]"
		
		utimer 10 [list putserv "PRIVMSG $nick :1 \[Mein Bot ist nicht mehr im Channel\] ::: 2 \[Wie bekomme ich einen Bot?\] ::: 3 \[Wie viele User brauche ich im Channel?\]"]
		utimer 10 [list putserv "PRIVMSG $nick :4 \[Wie werde ich meinen Bot wieder los?\] ::: 5 \[Der Bot erkennt mich nicht\] ::: 6 \[Channel schon vorhanden! Kann nicht requesten.\]"]
		utimer 10 [list putserv "PRIVMSG $nick :7 \[Wie ist die Webinterface URL?\] ::: 8 \[Meine Statistik-Seite wird nicht aktuallisiert!\] ::: 9 \[Mein Bot wurde kickbannt!\]"]
		utimer 10 [list putserv "PRIVMSG $nick :0 \[Keins davon (mit Supporter verbinden)\] ::: !done \[Support beenden!\]"]
	} else {
		set time [clock format [unixtime] -format %H:%M]
		append frage($nick) "::: \[$time\] $arg"
	}
#	putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick: $arg « "
}

proc support:answer {nick host hand chan arg} {
	global support answer ask frage

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }
	if {![isop $nick $support(chan)] && ![isvoice $nick $support(chan)]} { return }
	if {[llength $support(queue)] == 0} { putquick "NOTICE $nick :\[ Keine Supports vorhanden! \]"; return }

	if {[info exists answer($nick)]} { 
		putquick "NOTICE $nick :\[ Du supportest schon $answer($nick) - Wenn dies schon erledigt ist schreibe: !done \]"
	} else {
		set supportender [lindex $support(queue) 0]
		set answer($nick) "$supportender"
		set ask($supportender) "$nick"
		set support(queue) [lreplace $support(queue) 0 0]

		putquick "NOTICE $nick :\[ $answer($nick) \]:::\[ $frage($supportender) \]"
		putquick "PRIVMSG $answer($nick) :\[ #SP-Chan Support \]:::\[ $nick wird jetzt deine Frage(n) beantworten \]"
		unset frage($supportender)

		if {[llength $support(queue)] == 0} {
			putquick "PRIVMSG $support(chan) :\[ Es sind keine Supports mehr in Queue \]"
			putquick "PRIVMSG $support(ichan) :\[ Es sind keine Supports mehr in Queue \]"
		} else {
			putquick "PRIVMSG $support(chan) :\[ Noch [llength $support(queue)] Supports in Queue \]"
			putquick "PRIVMSG $support(ichan) :\[ Noch [llength $support(queue)] Supports in Queue \]"
		}
	}
}

proc support:finish {nick host hand chan arg} {
	global support answer ask

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }
	if {![isop $nick $support(chan)] && ![isvoice $nick $support(chan)]} { return }

	if {![info exists answer($nick)]} { 
		putquick "NOTICE $nick :\[ Du hast keinen zu Supportenden \]"
	} else {
		putquick "NOTICE $nick :\[ $answer($nick) wird nicht mehr von dir Supportet! \]"
		putquick "PRIVMSG $answer($nick) :Vielen Dank für dein Interesse, auf wiedersehen! Support wurde von $nick beendet!"
		unset ask($answer($nick))
		unset answer($nick)
	}
}

proc support:msg:finish {nick host hand arg} {
	global support answer ask

	if {[info exists ask($nick)]} { 
		putquick "PRICMSG $nick :Support manuell beendet, auf wiedersehen!"
		putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick an $ask($nick): »» Support wurde manuell von $nick beendet! « "
		unset ask($answer($nick))
		unset answer($nick)
		unset frage($nick)
	}
}



proc support:msg {nick host hand chan arg} {
	global support answer

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }
	if {![isop $nick $support(chan)] && ![isvoice $nick $support(chan)]} { return }

	if {[info exists answer($nick)]} {
		putquick "PRIVMSG $answer($nick) :$arg"
	}
}

set beleidigungen {
 "hörst du schlecht?? AUF WIEDERSEHEN!!!"
 "willst mich VERARSCHEN?? GIBT KEIN SUPPORT!!"
 "kennst du eve? von yellowstrom?... besuch sie doch mal --> www.yellowstrom.de"
 "Ich habe Sie gerade nicht genau verstanden: Ist vielleicht Ihre Stromrechnung zu hoch? Da hab ich was für Sie: die ultimativen Yello Stromspartipps."
 "Hallo Klaus! Was kann ich Ihnen zum Thema Yello und Strom sagen?"
 "Sie scheinen mich ja richtig gern zu haben! Trotzdem werde ich Sie bei der nächsten Entgleisung einfach sitzen lassen."
 "Sind Sie ein Sex-Maniac? Dann passen Sie besser auf, was Sie sagen - bevor ich mich vergesse!"
 "Reagieren Sie sich ruhig bei mir ab!"
 "Jetzt wirds ernst. Wenn Sie Ihre Finger jetzt nicht im Zaum halten können, dann breche ich unsere Unterhaltung ab."
 "ficken?"
 "Ok, ich vergesse Sie besser!"
 "..."
 "Ich fühl' mich so frisch wie aus dem Ei gepellt!"
 "Auch eine Möglichkeit, sich gern zu haben. Erst fliegen die Fetzen, dann Versöhnung bei Schummerlicht und Kuschelrock! Den günstigen Strom dafür gibt's bei Yello. Soll ich Ihnen mal die Yello Strompreise öffnen?"
 "Puuh - noch so einer, der's nicht lassen kann! Beim nächstenmal sind Sie raus"
 "Das habe ich überhört! Besser Sie wechseln das Thema, sonst beende ich das Gespräch."
}

proc support:msgm {nick host hand arg} {
	global support ask sucht:support frage versuch beleidigungen

	if {[info exists sucht:support($nick)]} {
		set option [lindex $arg 0]

		if {$versuch($nick) <= 3} {
			switch -- $option {
				1 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Es gibt viele Gründe für einen Part/Quit vom Bot. Entweder hat dein Channel nicht genügend Idler gehabt ( 25 sind erforderlich für jede Art! Dies gilt rund um die Uhr ),"
					putserv "PRIVMSG $nick :was aber viel wahrscheinlicher ist, er hatte kein OP (wir empfehlen ao/aom bei L/Q). Durch Net-Splits, PingTimeouts und Bot-Neustarts können die Bots auch kurzzeitig"
					putserv "PRIVMSG $nick :Parten/Quitten, aber dann kommen sie auf jeden Fall wieder."
					putserv "PRIVMSG $nick :Nichts überstürzen und erstmal abwarten!"
					if {$autoanswers($nick) == 2} {
						putserv "PRIVMSG $nick :Für weitere Fragen/Informationen besuche auch unsere Homepage www.shellfire.de ! Vielen Dank für dein Interesse, auf wiedersehen!"
					} {
						putserv "PRIVMSG $nick :Wenn dein Fragen beantwortet sind, beende den Support mit !done .  Ansonsten triff erneut eine Auswahl oder verbinde dich durch Eingabe von 0 mit einem Supporter."
						set sucht:support($nick) yes
					}
				}

				2 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Schreibe einfach ?request in #BotSolution. Dies löst eine Automatische Nachricht"
					putserv "PRIVMSG $nick :für den Request aus. Von dem Requestbot wirst du dann weitere Anweisung zum Request bekommen."
					putserv "PRIVMSG $nick :Sollte dies nicht gehen verbinde dich durch Eingabe von 0 mit einem Supporter."
					if {$autoanswers($nick) == 2} {
						putserv "PRIVMSG $nick :Für weitere Fragen/Informationen besuche auch unsere Homepage www.BotSolution.de ! Vielen Dank für dein Interesse, auf wiedersehen!"
					} {
						putserv "PRIVMSG $nick :Wenn dein Fragen beantwortet sind, beende den Support mit !done .  Ansonsten triff erneut eine Auswahl oder verbinde dich durch Eingabe von 0 mit einem Supporter"
						set sucht:support($nick) yes
					}
				}

				3 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :#BotSolution distanziert sich von den Hochanforderungen im Quakenet!"
					putserv "PRIVMSG $nick :Alle Botarbeiten benötigen nur 25 User (ohne clones) in einem Channel!"
					if {$autoanswers($nick) == 2} {
						putserv "PRIVMSG $nick :Für weitere Fragen/Informationen besuche auch unsere Homepage www.BotSolution.de ! Vielen Dank für dein Interesse, auf wiedersehen!"
					} {
						putserv "PRIVMSG $nick :Wenn dein Fragen beantwortet sind, beende den Support mit !done .  Ansonsten triff erneut eine Auswahl oder verbinde dich durch Eingabe von 0 mit einem Supporter"
						set sucht:support($nick) yes
					}
				}

				4 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Nimm ihm alle Flags in L/Q und deop ihn, er wird von alleine parten."
					putserv "PRIVMSG $nick :Wenn nicht, dann freu dich, du hast einen FreeIdler ;)"
					putserv "PRIVMSG $nick :Vielen Dank für dein Interesse, auf wiedersehen!"
				}

				5 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Unsere Bots arbeiten mit der Indifikation von Auths."
					putserv "PRIVMSG $nick :Mögliche Gründe sind: Du bist nicht geauth'd oder du bist nicht in der Liste!"
					putserv "PRIVMSG $nick :Vielen Dank für dein Interesse, auf wiedersehen!"
				}

				6 {
					unset sucht:support($nick)
					lappend support(queue) $nick
					putserv "PRIVMSG $nick :Ein Supporter wird sich so schnell wie möglich um dich kümmern! Du bist an [llength $support(queue)]. Stelle im Support-Queue!"
					putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick: \[[clock format [unixtime] -format %H:%M]\] Ich kann nicht requesten, obwohl in meinem Channel noch kein Bot ist! « "
				}

				7 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Du gehst auf unsere Page www.liebtdich.net und dann auf \"Request\""
					putserv "PRIVMSG $nick :Dort den gewünschten Bot auswählen, Formular abschicken und warten!"
					putserv "PRIVMSG $nick :Vielen Dank für dein Interesse, auf wiedersehen!"
				}

				8 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Bitte beachte, die Newsseiten werden alle 60 Minuten (also jede Stunde) aktuallisiert."
					putserv "PRIVMSG $nick :Falls die nicht der Fall sein sollte, melde dich bitte bei einem Admin."
					putserv "PRIVMSG $nick :Vielen Dank für dein Interesse, auf wiedersehen!"
				}

				9 {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Wenn es grade ebend passiert ist, entban den Bot, er wird automatisch wieder joinen!"
					putserv "PRIVMSG $nick :Kommt er trotzdem nicht wieder musst du unter www.liebtdich.net neu requesten!"
					putserv "PRIVMSG $nick :Vielen Dank für dein Interesse, auf wiedersehen!"
				}

				0 {
					unset sucht:support($nick)
					lappend support(queue) $nick
					putserv "PRIVMSG $nick :Ein Supporter wird sich so schnell wie möglich um dich kümmern! Du bist an [llength $support(queue)]. Stelle im Support-Queue!"
					putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick: $frage($nick) « "
				}

				!done {
					unset sucht:support($nick)
					putserv "PRIVMSG $nick :Support manuell beendet, auf wiedersehen!"
				}

				default {
					incr versuch($nick)
					putserv "PRIVMSG $nick :Keine Gültige Option! \[Versuch $versuch($nick)/5\]"
				}
				incr autoanswers($nick)
			}
		} else {
			unset sucht:support($nick)
			putserv "PRIVMSG $nick :5 Versuche überschritten! Support abgelehnt!"
			unset versuch($nick)
		}
	} elseif {[info exists ask($nick)]} {
		putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick an $ask($nick): $arg « "
	}
}

proc support:clear {nick host hand chan arg} {
	global support ask answer

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }
	if {![isop $nick $support(chan)] && ![isvoice $nick $support(chan)]} { return }

	if {$arg == "all"} {
		unset ask
		unset answer
		set support(queue) ""
		putquick "NOTICE $nick :\[ Queue cleared \]"
	} else {
		set user [lindex $arg 0]
		set find [lsearch $support(queue) $user]
		set support(queue) [lreplace $support(queue) $find $find]

		putquick "NOTICE $nick :\[ $user gelöscht \]"
		putquick "NOTICE $user :\[ Dein Support wurde abgelehnt! \]"
	}
}

proc support:supports {nick host hand chan arg} {
	global support ask answer

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }
	if {![isop $nick $support(chan)] && ![isvoice $nick $support(chan)]} { return }

	putquick "NOTICE $nick :\[ Es sind [llength $support(queue)] Supports in Queue \]"
}

proc support:nickchange {nick uhost hand chan newnick} {
	global ask answer

	if {[info exists ask($nick)]} {
		set ask($newnick) $ask($nick)
		set answer($ask($nick)) $newnick
		unset ask($nick)
	} 
	if {[info exists answer($nick)]} {
		set answer($newnick) $answer($nick)
		set ask($answer($nick)) $newnick
		unset answer($nick)
	}
}

proc support:mode {nick uhost hand chan mode arg} {
	global support

	if {[strlwr $chan] != [strlwr $support(chan)]} { return }

	if {$mode == "+m"} {
		putquick "PRIVMSG $support(chan) :\[ Support \]:::\[ /msg $::botnick !support <deine Frage> \]"

		bind time - "?2 * * * *" support:adsay
		bind time - "?0 * * * *" support:adsay
	} elseif {$mode == "-m"} {
		unbind time - "?2 * * * *" support:adsay
		unbind time - "?0 * * * *" support:adsay
	}
}

proc support:adsay {bla1 bla2 bla3 bla4 bla5} {
	global support

	putquick "PRIVMSG $support(chan) :\[ Support \]:::\[ /msg $::botnick !support <deine Frage> \]"
}


proc page:info {nick host hand chan arg} {

	putquick "PRIVMSG $chan :\[ Page: http://unikat.de \]"
}

proc support:system {nick host hand chan arg} {

	if {![isop $nick $chan] && ![isvoice $nick $chan]} { return }

	if {$arg != ""} {
		putquick "PRIVMSG $chan :$arg: Please use for Ask only: /msg $::botnick ?support <Question>"
	} {
		putquick "PRIVMSG $chan :Please use for Ask only: /msg $::botnick ?support <Question>"
	}
}

proc support:system2 {nick host hand chan arg} {

	if {![isop $nick $chan] && ![isvoice $nick $chan]} { return }

	if {$arg != ""} {
		putquick "PRIVMSG $chan :$arg, for more informations please visit: www.shellfire.de"
	} {
		putquick "PRIVMSG $chan :For more informations please visit: www.shellfire.de"
	}
}

proc support:flags {nick host hand chan arg} {

	global support

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }

	putquick "MODE $support(chan) +v $nick"
	putquick "MODE $support(ichan) +v $nick"
	putquick "MODE $support(bots) +o $nick"
	putquick "NOTICE $nick :\[ Done. \]"


}

proc support:kick {nick host hand chan arg} {

	global support

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }

	set knick [lindex $arg 0]
	set kickmsg [lrange $arg 1 end]

	if {![onchan $knick $support(chan)]} {
		putquick "NOTICE $nick :\[ $knick nicht in $support(chan) \]"
		return
	} elseif {[isvoice $knick $support(chan)] || [isop $knick $support(chan)]} {
		return
	}

	putquick "KICK $support(chan) $knick :$kickmsg"
	putquick "NOTICE $nick :\[ Done. \]"


}

proc support:help {nick host hand chan arg} {

        global support

        if {[strlwr $chan] != [strlwr $support(ichan)]} { return }

	if {[info exists ::supporthelp]} { puthelp "mode $support(chan) +m"; unset ::supporthelp; return 0  }
	if {![info exists ::supporthelp]} { puthelp "mode $support(chan) -m"; set ::supporthelp "on"; return 0 } 
        
}

proc support:ban {nick host hand chan arg} {

	global support botnick

	if {[strlwr $chan] != [strlwr $support(ichan)] && [strlwr $chan] != [strlwr $support(chan)]} { return }

        set bnick [lindex $arg 0]
        set btime [lindex $arg 1]
        set breason [lrange $arg 2 end]
        set banmask "*![getchanhost $bnick $support(chan)]"

	if {![onchan $bnick $support(chan)]} {
		putquick "NOTICE $nick :\[ $bnick nicht in $support(chan) \]"
		return
	} elseif {[isvoice $bnick $support(chan)] || [isop $bnick $support(chan)]} {
		return
	}

        if {$btime == ""} { set btime "30" }
        if {$breason == ""} { set breason "Lamer successfully removed" }

        newchanban $support(chan) $banmask $botnick $breason $btime
        flushmode $support(chan)
        putkick $support(chan) $bnick "$breason"

	putquick "NOTICE $nick :\[ Done. \]"

}

proc support:mode2 {nick host hand chan arg} {
	global support botnick

	if {[strlwr $chan] != [strlwr $support(ichan)]} { return }

	set mode [lindex $arg 0]
	set args [lrange $arg 1 end]

	putquick "MODE $support(chan) $mode $args"

	putquick "NOTICE $nick :\[ Done. \]"
}

proc support:timeout:finish {nick host hand arg} {
	global support answer ask

	if {[info exists ask($nick)]} { 
		putquick "PRICMSG $nick :Support auf Grund von Inaktivität beendet, auf wiedersehen!"
		putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick an $ask($nick): »» Support von $nick auf Grund von Inaktivität beendet! « "
		unset ask($answer($nick))
		unset answer($nick)
		unset frage($nick)
	} {
		putquick "PRICMSG $nick :Support auf Grund von Inaktivität beendet, auf wiedersehen!"
		putquick "PRIVMSG $support(ichan) :0,14 » Support »»» $nick: Support auf Grund von Inaktivität beendet! « "
		unset frage($nick)
}

}


putlog "2,14 :: 0Support-Script ver. $ver 2::: 0by kNocA 2:::0 ... loaded ... 2:: "