IRC QuizBot
Verfasst: Sonntag 20. November 2005, 16:01
Hallo Zusammen
Ich moechte hier gerne einen QuizBot fuers IRC vorstellen bzw. erstellen.
Also ich stelle hier nach und nach Teile des Bots vor und hoffe auf rege Beteiligung durch Kritik, Lob oder Anregungen.
So einen Bot habe ich schon im MSL (MircScriptLanguage) erstellt, bin also nicht unvorbereitet. Auch habe ich schon einige Sachen mit Python gemacht. Es sollte also ohne grosse Probleme funktionieren.
Also hoffen wir mal das Beste
Die Basis fuer den Bot stellt die irclib, daraus nehm ich den Testbot und bau den nach und nach um.
Damit haben wir schon mal einen Bot, der zu dem IRC-Netz verbindet und uns die Eingaben der User liefert.
LG
Phoenix
Ich moechte hier gerne einen QuizBot fuers IRC vorstellen bzw. erstellen.
Also ich stelle hier nach und nach Teile des Bots vor und hoffe auf rege Beteiligung durch Kritik, Lob oder Anregungen.
So einen Bot habe ich schon im MSL (MircScriptLanguage) erstellt, bin also nicht unvorbereitet. Auch habe ich schon einige Sachen mit Python gemacht. Es sollte also ohne grosse Probleme funktionieren.
Also hoffen wir mal das Beste
Die Basis fuer den Bot stellt die irclib, daraus nehm ich den Testbot und bau den nach und nach um.
Code: Alles auswählen
#! /usr/bin/env python
#
"""Ein Quiz-Bot fuers IRC
Fuer den Anfang das Grundgeruest.
disconnect -- Der Bot beendet die Verbindung und verbindet nach 60 sec. neu.
die -- Der Bot beendet sich.
"""
import string
from ircbot import SingleServerIRCBot
from irclib import irc_lower, nm_to_n
#Globale Variablen
DEBUG = 1
QUIZMASTER = "Phoenix"
VERSION = "0.001"
NICKNAME = "QuizZ"
SERVER = "irc.netz.de"
class QuizBot(SingleServerIRCBot):
def __init__(self, channel, nickname, server, port=6667):
SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
self.channel = channel
def on_nicknameinuse(self, c, e):
c.nick(c.get_nickname() + "_")
def on_welcome(self, c, e):
c.join(self.channel)
def on_privmsg(self, c, e):
nick = nm_to_n(e.source())
if DEBUG:
print "privmsg: ", nick, e.arguments()[0]
self.do_command(e, e.arguments()[0])
def on_pubmsg(self, c, e):
nick = nm_to_n(e.source())
a = string.split(e.arguments()[0], ":", 1)
if DEBUG:
print "pubmsg: ", nick, a
if len(a) > 1 and irc_lower(a[0]) == irc_lower(self.connection.get_nickname()):
self.do_command(e, string.strip(a[1]))
return
def do_command(self, e, cmd):
nick = nm_to_n(e.source())
c = self.connection
if cmd == "disconnect":
self.disconnect()
elif cmd == "die":
self.die()
def main():
port = 6667
channel = "#quiz"
bot = QuizBot(channel, NICKNAME, SERVER, port)
bot.start()
if __name__ == "__main__":
main()
LG
Phoenix