]>
jfr.im git - erebus.git/blob - modules/nitterize.py
8a8b09596d41f3250b9302cbb4f89ebd5a737a29
1 # Erebus IRC bot - Author: Erebus Team
2 # vim: fileencoding=utf-8
3 # nitterize twitter links
4 # This file is released into the public domain; see http://unlicense.org/
8 'author': 'Erebus Team',
9 'license': 'public domain',
10 'compatible': [0], # compatible module API versions
11 'depends': ['urls'], # other modules required to work properly?
12 'softdeps': [], # modules which are preferred but not required
17 lib
= modlib
.modlib(__name__
)
18 modstart
= lib
.modstart
23 re_findtwitter
= re
.compile(r
"""https?://(?:www\.)?(?:twitter|x)\.com/([-./_a-z0-9]+)""", re
.I
)
25 @lib.hooknum("PRIVMSG")
26 def privmsg_hook(bot
, line
):
27 pieces
= line
.split(None, 3)
29 if chan
[0] != "#": return
33 for mo
in re_findtwitter
.finditer(msg
):
34 replaced
+= re_findtwitter
.sub(bot
.parent
.cfg
.get('nitterize', 'instance', 'https://nitter.net') + r
"\1", mo
.group(0)) + " "
36 bot
.msg(chan
, replaced
)
37 titles
= lib
.mod('urls').process_line(replaced
)
38 lib
.mod('urls').send_response(bot
, chan
, titles
)
40 @lib.hook(glevel
=lib
.STAFF
, needchan
=False)
42 def setnitter(bot
, user
, chan
, realtarget
, *args
):
44 if newnitter
[-1] != "/":
46 bot
.parent
.cfg
.set('nitterize', 'instance', newnitter
)