summaryrefslogtreecommitdiff
path: root/TODO
blob: 2504ef39d3cd69c9f20fbab1c1df48a37610bfa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 o !votekick und !kick müssen best. kickfunktion aufrufen. die kann dann
   kickban und nach 3 sec unban oder sowas machen.
 o benutzergruppen; z.B. votekick-wahlberechtigt?

 o ein plugin soll auf verschiedene commands ansprechen können
   (z.B. !kick, !kickban etc)


 o neuladen von listen + conf via plugins
 o listenfunktionen: add/del z.B.(useradd, userdel)
 o bot forken lassen (damit nohup wegfallen kann)
 o user per nickserv identifizieren, alternative: passwort
 o alle plugins sollen configfile nutzen


 o bannlisten??? (mode #channel +b)

 o einige sachen können mit maps besser gelöst werden
 o DrunkenMan[,:] do_sth statt !do_sth als befehl-prefix
     channel und session ist dafür relevant
 o slot- oder hook-konzept: plugins senden nicht mehr "KICK :foo", sondern
   rufen parent->do("KICK", arg1, ...) auf
   returnval: -1=no such hook, -2 .. -inf = error, 0..inf=ok
   einige dinge, wie kick, ban, kickban, stellt drunkenman selbst bereit
   diese, und alle undefinierten können durch hooks überschrieben werden
   so kann z.B. drunkenman's kick nur kicken, ein spezielles kick aber
   noch für 3 sec bannen, um autorejoins zu vermeiden
   
   plugins können folgendes tun:
   if (parent->do("timedkick"...)<0) parent->do("normalkick")
   
   ODER:
   plugins stellen hook(string what, void* data, TConnection* parent)
   bereit, und sagen in init, was sie können (kann auch "nichts" sein)
   wenn nun ein plugin als "KICK" eingetragen ist, wird statt
   dm's eigenem kick dieser hook gerufen, mit allen infos über den
   momentanen verbindungskontext.
   -> plugins können auch später noch darauf reagieren
   
   außerdem können hooks "antworten". dafür wird ein weiterer
   exe-grund erstellt, nämlich REASON_ANSWER. den können plugins
   nicht ignorieren.
   so kann z.B. "is_master" erst einen whois starten, und erst dann
   antworten, wenn der whois durch ist.