Zum Inhalt springen

WorkShop-mIRC-User-Verwaltung

 Workshop mIRC User Verwaltung

mIRC Tutorial : Thema: User Verwaltung:

Anmerkung:
Dieses mIRC Bot Tutorium wurde von einem GastAutor erstellt, weiteres unten. 
Er wurde unzensiert und unbehandelt auf IRC-Mania.de aufgenommen !

Sollte ein hier präsentierter WorkShop extrem viele Fehler aufweisen, bitte ich um eine Benachrichtigung WorkShopKritik@IRC-Mania.de

Wir übernehmen keine Verantwortung für Schäden, die durch diesen Workshop entstanden sind ! 

Bemerkung 
von 
IRC-Mania.de:

Dieser IRC Workshop ist nur ein Auszug, von einem kompletten mIRC Bot Tutorial von MyPageHome.de.

 

Autor: NoB
URL: http://www.MyPageHome.de
Email: NoB

Dieses Script stellt eine komplette User-Verwaltung für ein mirc-BOT dar.
Es arbeitet mit der Notify-Liste des mirc was viele Vorteile mit sich bringt.
Der einzige Nachteil ist das sich maximal nur 150 User registrieren können, was aber reichen sollte.
Aber keine langen vorreden sondern gleich los mit der ersten Funktion.

 

;—————————————————
;Disconnect Funktion
;—————————————————
on 1:DISCONNECT:{
disable #groupnotify
}

Diese Funktion dient dazu die Notify-Funktion abzuschalten sobald der BOT disconnected.

;—————————————————
;Connect Funktion
;—————————————————
on 1:CONNECT:{
LIT
notify
.timergorupan 1 1 enable #groupnotify
}

Diese Funktion wird ausgeführt sobald der BOT zu einem Server connected.
Als erstes wird der Alias LIT ausgführt welcher nachfolgend aufgelistet und beschrieben ist.
Danach wird die Notify-Liste aktualisiert und danach erst mit dem Timer die Notify-Funktion eingeschaltet.
Das ist wichtig damit nicht alle User die online sind eine Meldung bekommen sobald der BOT connected.

Alias LIT {
var %litzähler 1
while (%litzähler <= $notify(0)) {
if ($LastIdent($notify(%litzähler)) < $calc($ctime – 2592000)) {
UserLöschen $notify(%litzähler)
}
elseif ($IdentStatus($notify(%litzähler)) == TRUE) {
WU_IdentStatus $notify(%litzähler) FALSE
}
inc %litzähler
}
echo -s $time Userlist bereinigt!
}

Hier nun der eben angesprochene Alias LIT.
LIT steht für Last Ident Test => Letzte Anmeldung Test.
Als erstes wird in der while-Schleife geguckt wann sich jeder User das letzte mal angemeldet hat.
Ist das länger als 30 Tage her, wird der User von der Notify-Liste gelöscht.
Des weiteren wird geprüft ob noch ein User angemeldet ist und wenn ja wird er automatisch abgemeldet.
Zum Schluss wird im Status-Fenster die Meldung „Userlist bereinigt!“ ausgegeben.

;—————————————————
;Unotify Funktion
;—————————————————
on 1:UNOTIFY:{
if ($IdentStatus($nick) == TRUE) {
WU_IdentStatus $nick FALSE
}
}

Die Funktion wird ausgelöst wenn ein User den Chat verlässt oder den Nick wechselt.
Falls er angemeldet ist wird sein Status in abgemldet geändert.

;—————————————————
;Notify Funktion
;—————————————————
#groupnotify on

on 1:NOTIFY:{
notice $nick Hi $nick $+ ! Du kannst dich jetzt mit !ident PASSWORT anmelden.
}

#groupnotify end

Hier nun die Notify-Funktion, die ausgelöst wird wenn ein User den Server betritt.
Dann bekommt der User die Meldung das er sich anmelden kann.

;—————————————————
;Register Funktion
;—————————————————
on 1:TEXT:!register &:?:{
$userpuffer($nick)
if ($usersperre($nick) == HALT) { msg $nick Du bist gesperrt für den Bot! }
elseif ($Userpass($nick) != $null) { msg $nick FEHLER: Du bist bereits Registriert! }
elseif (($len($2) < 6) || ($len($2) > 10)) { msg $nick FEHLER: Passwort muss 6 – 10 Buchstaben haben! }
else {
set %registerpasswort $2
ns status $nick
}
}

Hier ist die Funktion mit der sich User in dem BOT anmelden können.
Der Identifer $userpuffer ist ein selbstgebauter, der Alias dazu folgt später.
Dies muss sein damit man den BOT nich flooden kann.
Danach wird geschaut ob der User (Nick) für den BOT gesperrt ist oder vielleicht schon registriert.
Dann wird noch das Passwort überprüft und falls alles OK ist wird der User registriert.
Dazu wird beim NickServ geguckt ob der Nick des Users registriert und identifiziert ist.

on *:NOTICE:STATUS * 3:?:{
if (($nick == nickserv) && (%registerpasswort != $null)) {
WU_Userpass $2 %registerpasswort
WU_IdentStatus $2 FALSE
WU_LastIdent $2 $ctime
notify $2
disable #groupnotify
notify
.timergorupan 1 1 enable #groupnotify
msg $2 Registrierung Erfolgreich!
msg $2 Dein Passwort lautet: %registerpasswort
msg $2 Du kannst dich anmelden mit: !ident %registerpasswort
msg $2 Für wietere Informationen !hilfe ident eingeben.
echo -s NEUER USER -> $2
unset %registerpasswort
}
}

Auf die Status anfragen antwortet der NickServ mit einer Notice.
Diese Notice wird hier abgefangen und ausgewertet und wenn der Status 3 ist wird die Registrierung durchgeführt.
Dazu werden das Passwort, der Anmeldestatus und die letzte Anmeldezeit in einer INI-Datei gespeichert.
Dann wird der Nickname der Notify-Liste hinzugefügt und die Liste aktualisiert.
Als letztes wird der User informiert ob die Registrierung erfolgreich war, und ein Meldung im Status-Fenster vom BOT angezeigt.

on *:NOTICE:STATUS * 0:?:{
if (($nick == nickserv) && (%registerpasswort != $null)) {
msg $2 FEHLER: Registrierung Fehlgeschlaben!
msg $2 Dein Nickname ist nicht registriert oder nicht identifiziert auf dem NickServ!
unset %registerpasswort
}

on *:NOTICE:STATUS * 1:?:{
if (($nick == nickserv) && (%registerpasswort != $null)) {
msg $2 FEHLER:Registrierung Fehlgeschlaben!
msg $2 Dein Nickname ist nicht registriert oder nicht identifiziert auf dem NickServ!
unset %registerpasswort
}
}

Diese Meldungen werden ausgegeben wenn der Nick des Users nicht registriert oder identifiziert ist auf dem NickServ.

Alias usersperre {
var %uszähler 1
while (%uszähler <= $lines(GesperrteUser.txt)) {
if ($1 == $read(GesperrteUser.txt,%uszähler)) {
var %usergebnis HALT
var %uszähler $lines(GesperrteUser.txt)
}
inc %uszähler
}
return %usergebnis
}

Hier ist der Alias zum Identifer $usersperre, der überprüft ob der User in der Datei GesperrteUser.txt steht.

;—————————————————
;User-Löschen Funktion
;—————————————————
on 1:TEXT:!unreg:?:{
if ($IdentStatus($nick) != TRUE) { msg $nick FEHLER:Du musst dich erst Anmelden! }
else {
UserLöschen $nick
msg $nick Deine BOT-Registrierung wurde gelöscht!
echo -s USER-LÖSCHUNG -> $nick
}
}

Mit der Funktion !unreg können sich angemeldete User wieder von der User-Liste löschen.

Alias UserLöschen {
remini User.ini $1
notify -r $1
if ($server != $null) {
disable #groupnotify
notify
.timergorupan 1 1 enable #groupnotify
}
}

Als erstes wird der User aus der INI-Datei gelöscht.
Danach von der Notify-Liste welche danach aktualisiert wird.

;—————————————————
;Ident Funktion
;—————————————————
on 1:TEXT:!ident &:?:{
$userpuffer($nick)
if ($Userpass($nick) == $null) {
msg $nick FEHLER: Du musst dich erst registrieren!
msg $nick Dazu !register Passwort eingeben.
}
elseif ($IdentStatus($nick) == TRUE) { notice $nick INFO: Du bist bereits Angemeldet! }
elseif ($Userpass($nick) == $2) { UserAnmelden $nick }
}
on 1:NOTICE:!ident &:?:{
$userpuffer($nick)
if ($Userpass($nick) == $null) {
msg $nick FEHLER: Du musst dich erst registrieren!
msg $nick Dazu !register PASSWORT eingeben.
}
elseif ($IdentStatus($nick) == TRUE) { notice $nick INFO: Du bist bereits Angemeldet! }
elseif ($Userpass($nick) == $2) { UserAnmelden $nick }
}
Alias UserAnmelden {
WU_IdentStatus $1 TRUE
WU_LastIdent $1 $ctime
notice $1 Ident Erfolgreich! Status: Angemeldet
}

Mit der !ident-Funktion werden registrierte User angemeldet.
Ich habe diese Funktion für eine Messge im Query-Fenster sowie für eine Notice geschrieben.
Die Anmeldung kann nicht im öffentlichen Raum passieren da dann ja jeder das Passwort sehen kann.

;—————————————————
;Passwort Funktion
;—————————————————
on 1:TEXT:!passwort &:?:{
$userpuffer($nick)
if ($IdentStatus($nick) != TRUE) { msg $nick Zugriff verweigert! }
else {
WU_Userpass($nick $2)
msg $nick Dein neues Passwort lautet: $2
}
}

Mit der !passwort-Funktion kann jeder User der angemeldet ist sein Ident-Passwort ändern.

;———————————————————–
;Alias User-Puffer
;———————————————————–
Alias userpuffer {
if ( [ % $+ [ puffer $+ [ $1 ] ] ] != $null) { var %upergebnis halt }
else {
set [ % $+ [ puffer $+ [ $1 ] ] ] EIN
.timerpuffer $+ $1 1 10 unset % $+ [ puffer $+ [ $1 ] ]
}
return %upergebnis
}

Hier nun noch der Eingabepuffer welcher es nur zulässt das jeder User nur alle 10 Sekunden eine Eingabe machen kann.

Jetzt folgen lediglich noch Hilfs-Funktoinen zum beschreiben oder lesen der User INI-Datei.
;——————————————————————–
;User.ini lesen
;——————————————————————–
Alias Userpass { return $readini(User.ini,$1,Passwort) }
Alias IdentStatus { return $readini(User.ini,$1,IdentStatus) }
Alias LastIdent { return $readini(User.ini,$1,LastIdent) }

;——————————————————————–
;User.ini schreiben
;——————————————————————–
Alias WU_Userpass { writeini User.ini $1 Passwort $2 }
Alias WU_IdentStatus { writeini User.ini $1 IdentStatus $2 }
Alias WU_LastIdent { writeini User.ini $1 LastIdent $2 }