Register for your free account! | Forgot your password?

You last visited: Today at 16:01

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Irc-Bots

Discussion on Irc-Bots within the Tutorials forum part of the Off-Topics category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2006
Posts: 40
Received Thanks: 0
Da ich quakenet 15mal angeschrieben habe sie sollen mir einen channel machen (also mit bot) und sie nicht geantwortet haben möchte ich nun fragen ob jemand vll einen mirc bot hat
wäre nett von euch wenn ihr mir weiterhelfen könntet
heddy is offline  
Old 05/09/2006, 13:48   #2
 
elite*gold: 42
Join Date: Oct 2005
Posts: 11,493
Received Thanks: 2,724
Ich weiß nit obde das gesucht hast:

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 1ISCONNECT:{
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 <= &#036;notify(0)) {
if (&#036;LastIdent(&#036;notify(%litzähler)) < &#036;calc(&#036;ctime - 2592000)) {
UserLöschen &#036;notify(%litzähler)
}
elseif (&#036;IdentStatus(&#036;notify(%litzähler)) == TRUE) {
WU_IdentStatus &#036;notify(%litzähler) FALSE
}
inc %litzähler
}
echo -s &#036;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 (&#036;IdentStatus(&#036;nick) == TRUE) {
WU_IdentStatus &#036;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 &#036;nick Hi &#036;nick &#036;+ ! 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 &:?:{
&#036;userpuffer(&#036;nick)
if (&#036;usersperre(&#036;nick) == HALT) { msg &#036;nick Du bist gesperrt für den Bot! }
elseif (&#036;Userpass(&#036;nick) != &#036;null) { msg &#036;nick FEHLER: Du bist bereits Registriert! }
elseif ((&#036;len(&#036;2) < 6) || (&#036;len(&#036;2) > 10)) { msg &#036;nick FEHLER: Passwort muss 6 - 10 Buchstaben haben! }
else {
set %registerpasswort &#036;2
ns status &#036;nick
}
}

Hier ist die Funktion mit der sich User in dem BOT anmelden können.
Der Identifer &#036;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 ((&#036;nick == nickserv) && (%registerpasswort != &#036;null)) {
WU_Userpass &#036;2 %registerpasswort
WU_IdentStatus &#036;2 FALSE
WU_LastIdent &#036;2 &#036;ctime
notify &#036;2
disable #groupnotify
notify
.timergorupan 1 1 enable #groupnotify
msg &#036;2 Registrierung Erfolgreich!
msg &#036;2 Dein Passwort lautet: %registerpasswort
msg &#036;2 Du kannst dich anmelden mit: !ident %registerpasswort
msg &#036;2 Für wietere Informationen !hilfe ident eingeben.
echo -s NEUER USER -> &#036;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 ((&#036;nick == nickserv) && (%registerpasswort != &#036;null)) {
msg &#036;2 FEHLER: Registrierung Fehlgeschlaben!
msg &#036;2 Dein Nickname ist nicht registriert oder nicht identifiziert auf dem NickServ!
unset %registerpasswort
}
}
on *:NOTICE:STATUS * 1:?:{
if ((&#036;nick == nickserv) && (%registerpasswort != &#036;null)) {
msg &#036;2 FEHLER:Registrierung Fehlgeschlaben!
msg &#036;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 <= &#036;lines(GesperrteUser.txt)) {
if (&#036;1 == &#036;read(GesperrteUser.txt,%uszähler)) {
var %usergebnis HALT
var %uszähler &#036;lines(GesperrteUser.txt)
}
inc %uszähler
}
return %usergebnis
}

Hier ist der Alias zum Identifer &#036;usersperre, der überprüft ob der User in der Datei GesperrteUser.txt steht.

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

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

Alias UserLöschen {
remini User.ini &#036;1
notify -r &#036;1
if (&#036;server != &#036;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 &:?:{
&#036;userpuffer(&#036;nick)
if (&#036;Userpass(&#036;nick) == &#036;null) {
msg &#036;nick FEHLER: Du musst dich erst registrieren!
msg &#036;nick Dazu !register Passwort eingeben.
}
elseif (&#036;IdentStatus(&#036;nick) == TRUE) { notice &#036;nick INFO: Du bist bereits Angemeldet! }
elseif (&#036;Userpass(&#036;nick) == &#036;2) { UserAnmelden &#036;nick }
}
on 1:NOTICE:!ident &:?:{
&#036;userpuffer(&#036;nick)
if (&#036;Userpass(&#036;nick) == &#036;null) {
msg &#036;nick FEHLER: Du musst dich erst registrieren!
msg &#036;nick Dazu !register PASSWORT eingeben.
}
elseif (&#036;IdentStatus(&#036;nick) == TRUE) { notice &#036;nick INFO: Du bist bereits Angemeldet! }
elseif (&#036;Userpass(&#036;nick) == &#036;2) { UserAnmelden &#036;nick }
}
Alias UserAnmelden {
WU_IdentStatus &#036;1 TRUE
WU_LastIdent &#036;1 &#036;ctime
notice &#036;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 &:?:{
&#036;userpuffer(&#036;nick)
if (&#036;IdentStatus(&#036;nick) != TRUE) { msg &#036;nick Zugriff verweigert! }
else {
WU_Userpass(&#036;nick &#036;2)
msg &#036;nick Dein neues Passwort lautet: &#036;2
}
}

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

;-----------------------------------------------------------
;Alias User-Puffer
;-----------------------------------------------------------
Alias userpuffer {
if ( [ % &#036;+ [ puffer &#036;+ [ &#036;1 ] ] ] != &#036;null) { var %upergebnis halt }
else {
set [ % &#036;+ [ puffer &#036;+ [ &#036;1 ] ] ] EIN
.timerpuffer &#036;+ &#036;1 1 10 unset % &#036;+ [ puffer &#036;+ [ &#036;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 &#036;readini(User.ini,&#036;1,Passwort) }
Alias IdentStatus { return &#036;readini(User.ini,&#036;1,IdentStatus) }
Alias LastIdent { return &#036;readini(User.ini,&#036;1,LastIdent) }

;--------------------------------------------------------------------
;User.ini schreiben
;--------------------------------------------------------------------
Alias WU_Userpass { writeini User.ini &#036;1 Passwort &#036;2 }
Alias WU_IdentStatus { writeini User.ini &#036;1 IdentStatus &#036;2 }
Alias WU_LastIdent { writeini User.ini &#036;1 LastIdent &#036;2 }

Gefunden auf
Ghost is offline  
Old 05/09/2006, 15:32   #3
 
Lowfyr's Avatar
 
elite*gold: 235
The Black Market: 135/1/0
Join Date: Jul 2003
Posts: 16,559
Received Thanks: 17,765
erm heddy, du musst nicht irgendjmd vom qnet anschreiben damit sie dir ein channel machen.

Da gibts einen automatischen prozess bei dem du diverse anforderungen erfüllen müsst, weiteres kannst du hier nachlesen:

Lowfyr is offline  
Old 05/12/2006, 09:23   #4
 
elite*gold: 0
Join Date: Nov 2005
Posts: 292
Received Thanks: 2
ich gehe mal davon aus das du einen eggdrop suchst wenn du von "irc-bot" sprichst, sprich ein tcl script das auf einem root läuft ohne von dir dazu getrieben zu werden ^^

komm doch mal in #kiffen dann schleuder ich dir paar bots in denen chan
KoyTheOne is offline  
Old 05/14/2006, 17:09   #5
 
DaYsa's Avatar
 
elite*gold: 0
Join Date: Mar 2006
Posts: 622
Received Thanks: 32
Quote:
Originally posted by KoyTheOne@May 12 2006, 09:23
ich gehe mal davon aus das du einen eggdrop suchst wenn du von "irc-bot" sprichst, sprich ein tcl script das auf einem root läuft ohne von dir dazu getrieben zu werden ^^

komm doch mal in #kiffen dann schleuder ich dir paar bots in denen chan
omg einer Von #Kiffen hier *wegrenn*^^

Kennste #DaJak bzw #DaJakY noch?
DaYsa is offline  
Old 05/18/2006, 16:08   #6
 
elite*gold: 0
Join Date: Nov 2005
Posts: 292
Received Thanks: 2
nein und wie du wissen solltest ist es mir gleichgültig

KoyTheOne is offline  
Old 05/21/2006, 19:54   #7
 
Senktris's Avatar
 
elite*gold: 0
Join Date: Mar 2005
Posts: 349
Received Thanks: 8


Da gibts jede Menge Infos, Tut's etc. für Eggdrops , hoffe du findest dort was du brauchst ^^
Senktris is offline  
Reply




All times are GMT +1. The time now is 16:01.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.