chiark
/
gitweb
/
~matthewv
/
irc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
send tweets as UTF-8
[irc.git]
/
Servus-chiark.py
diff --git
a/Servus-chiark.py
b/Servus-chiark.py
index a0ba8a5189a0d2060f4b6d635293f91c6309e8c5..0af2dbce4424bc423676a1581ed22e6ba35b1bf3 100644
(file)
--- a/
Servus-chiark.py
+++ b/
Servus-chiark.py
@@
-24,7
+24,9
@@
# Acrobat configuration file
# The following definitions are required to be present in this module:
# Acrobat configuration file
# The following definitions are required to be present in this module:
-server = "rapun"
+# You can also override them on the command-line
+# e.g. python acrobat.py Servus-chiark nickname=testbot channel=\#test owner=MyNick
+server = "chiark"
port = 6667
nickname = "Servus"
channel = "#chiark"
port = 6667
nickname = "Servus"
channel = "#chiark"
@@
-33,7
+35,7
@@
owner = "Emperor"
# Everything else in this file is configuration-specific.
# Everything else in this file is configuration-specific.
-import os, time
+import os, time
, re, twitter
# Most command implementations are stored in a separate module.
import commands as c
# Most command implementations are stored in a separate module.
import commands as c
@@
-140,6
+142,17
@@
class game:
maxlose=14*minlose #2 weeks
losetime=time.time()+300000
maxlose=14*minlose #2 weeks
losetime=time.time()+300000
+# initialise the urldb on startup
+urldb={}
+lastexp=time.time()
+#expire urls if not asked about or seen for >71 hours
+expirelen=71*60*60
+#do an expiry run every hour
+expirevery=60*60
+
+# non-authenticated twitter api instance
+twitapi = twitter.Api()
+
# Command processing: whenever something is said that the bot can hear,
# "command" is invoked and must decide what to do. This configuration
# defines a couple of special cases (for karma) but is otherwise driven
# Command processing: whenever something is said that the bot can hear,
# "command" is invoked and must decide what to do. This configuration
# defines a couple of special cases (for karma) but is otherwise driven
@@
-158,13
+171,15
@@
commands = {"karma": (c.karmaq,karmadb),
"reload": reload,
"quit": quit,
"die": quit,
"reload": reload,
"quit": quit,
"die": quit,
+ "define": c.defineq,
"google": c.googleq,
"google": c.googleq,
+ "url": (c.urlq,urldb),
"units": c.unitq,
"help": c.helpq,
"units": c.unitq,
"help": c.helpq,
-# "define": c.defineq,
# "game": (c.gameq,game),
"say": c.sayq,
# "game": (c.gameq,game),
"say": c.sayq,
- "do": c.doq }
+ "do": c.doq,
+ "twit": (c.twitterq,twitapi) }
# disconnect and hop annoy people
# "disconnect": c.disconnq,
# "hop": c.disconnq }
# disconnect and hop annoy people
# "disconnect": c.disconnq,
# "hop": c.disconnq }
@@
-174,6
+189,7
@@
triggers = ("!", "~") # what character should the bot be invoked by:
# eg !trout, ~trout etc.
def command(bot, cmd, nick, conn, public):
# eg !trout, ~trout etc.
def command(bot, cmd, nick, conn, public):
+ global urldb,lastexp,expirelen,expirevery,twitapi
ours=0
try:
if public and cmd[0] in triggers:
ours=0
try:
if public and cmd[0] in triggers:
@@
-184,6
+200,16
@@
def command(bot, cmd, nick, conn, public):
command = cmd.split()[0]
except IndexError:
command=""
command = cmd.split()[0]
except IndexError:
command=""
+
+ t=time.time()
+ if t - lastexp > expirevery:
+ c.urlexpire(urldb,expirelen)
+ lastexp=t
+
+ if public:
+ if c.urlre.search(cmd) and command.lower()!="url":
+ c.dourl(bot,conn,nick,cmd,urldb)
+
# karma: up
if command.endswith("++"):
karma(cmd,1)
# karma: up
if command.endswith("++"):
karma(cmd,1)