Commit graph

704 commits

Author SHA1 Message Date
jesopo
89951aace5 Add !connect in modules/admin.py 2018-10-03 15:59:36 +01:00
jesopo
69d58eede2 Move src/Utils.py in to src/utils/, splitting functionality out in to modules of
related functionality
2018-10-03 13:22:37 +01:00
jesopo
489d508997 Fix BATCH parsing 2018-10-03 11:32:20 +01:00
jesopo
2b349105aa Move parsing IRC lines to src/Utils.py, added base support for parsing outgoing
messages
2018-10-03 11:31:51 +01:00
Evelyn
92477e0fba NR: Fix message colouring 2018-10-03 07:19:59 +01:00
jesopo
9118af5e9c Support changing command responses from PRIVMSG to NOTICE 2018-10-02 21:40:34 +01:00
jesopo
22740e2faa Re-add lost "!" prefix on stderr prefix 2018-10-02 17:48:07 +01:00
jesopo
e27c0e0a0c Simplify modules/line_handler.handle 2018-10-02 17:47:45 +01:00
jesopo
8f05f66a03 .strip() target name in !karma 2018-10-02 15:14:42 +01:00
jesopo
a9b0dd331b Correctly set nickname-only karma 2018-10-02 15:14:34 +01:00
jesopo
c7e4ae6e12 use Utils.irc_lower, not .lower() 2018-10-02 15:14:06 +01:00
jesopo
150788c6c6 Add !leave to modules/channel_op.py 2018-10-02 14:55:12 +01:00
jesopo
16474dacef Don't complain when modules/karma.py can't find a user when it's in
karma-nickname-only mode
2018-10-02 14:35:35 +01:00
jesopo
67c22416cc Use PRIORITY_MONITOR for keeping count of words (to avoid seeing commands) 2018-10-02 14:29:51 +01:00
jesopo
64733eb37f Implement karma-nickname-only, to only allow karma for users in the current
channel
2018-10-02 14:29:32 +01:00
jesopo
a7563c9653 Pass msgid in send_stdout/send_stdin in modules/commands.py 2018-10-02 14:22:42 +01:00
jesopo
a76f206551 It's 'draft/msgid' not just 'msgid', also actually store 'msgid' in self._msgid 2018-10-01 17:52:04 +01:00
jesopo
26bfd61487 The correct msgid reply tag (at the moment) is '+draft/reply' 2018-10-01 17:28:45 +01:00
jesopo
976b6ae335 Better support for msgtags with PRIVMSGs; put functionality in to
modules/commands.py to reply to specific messages by use of msgids
2018-10-01 17:26:31 +01:00
jesopo
e9416034df Typo in modules.commands.py, 'unsafe_call' -> 'call_unsafe' 2018-10-01 16:32:24 +01:00
jesopo
ee96b3310b Some networks send NICK as 'nick!user@host NICK newnick` instead of
'nick!user@host NICK :newnick' (which is RFC compliant but BitBot didn't support
it)
2018-10-01 16:13:08 +01:00
jesopo
7eb31820d7 Add call_unsafe functions to EventManager.EventHook, to not swallow errors on
specific function calls (e.g. preprocess.command)
2018-10-01 16:04:06 +01:00
jesopo
59243f492f Implement src/IRCObject.py to convert specific objects in to strings when
passing them to modules/scripts.py scripts
2018-10-01 13:48:55 +01:00
jesopo
120acf54ec Add 'trace' logging level for src/Database.py and src/EventManager.py very
verbose debugging
2018-10-01 13:48:22 +01:00
jesopo
300eadf9b6 Change modules/line_handler.py to use @Utils.hook 2018-10-01 13:47:45 +01:00
jesopo
31c19aec69 Added setpassword command to modules/permissions.py 2018-09-30 22:11:37 +01:00
jesopo
1cbca6fb88 Update a reference from buffer to target.buffer in modules/commands.py 2018-09-30 20:53:58 +01:00
jesopo
a879125883 Typo in modules/check_mode.py; 'required_mode' -> 'require_mode' 2018-09-30 20:53:36 +01:00
jesopo
43740d40f4 Add modules/strip_color.py 2018-09-30 20:12:11 +01:00
jesopo
c87728a87d Move src/IRCLineHandler.py to modules/line_handler.py 2018-09-30 19:43:20 +01:00
jesopo
10ef985a8a Switch to using docstring for usage, permission and require_mode 2018-09-30 17:29:09 +01:00
jesopo
16dc2c39a9 Refactor modules/channel_op.py and add !tempban/!tempkickban 2018-09-30 13:28:26 +01:00
jesopo
30641ce312 We don't need to explicitly pass "buffer" through on command events 2018-09-30 11:43:34 +01:00
jesopo
7ab8948101 Fix piece of modules/define.py._get_definition( that was accepting a word or an
event.
2018-09-30 10:27:50 +01:00
jesopo
aa0c9ec9f1 Update modules/signals.py to use the new Config "system" 2018-09-29 20:27:20 +01:00
jesopo
bcb67db3fd Add !reloadscripts to modules/scripts.py 2018-09-29 15:05:50 +01:00
jesopo
47ec11bbef Add src/Cache.py, use it in modules/coins.py 2018-09-29 12:53:39 +01:00
jesopo
c5a7978c9b Make 'account' arg for identify command optional 2018-09-29 10:51:16 +01:00
jesopo
3dbd997a90 Better .strip()/.split() logic for !help 2018-09-29 10:50:25 +01:00
jesopo
c12e8220ac Strip trailing newlines from scripts.py returns 2018-09-29 09:46:47 +01:00
jesopo
1721e40c61 Add scripts.py, to support basic modules in languages other than python 2018-09-29 09:45:08 +01:00
jesopo
746155fd57 Support command hooks not coming from a class instance 2018-09-29 09:44:13 +01:00
jesopo
7c7e5553d1 Update ModuleManager.load_module calls in modules.py 2018-09-29 09:23:57 +01:00
jesopo
a8bf3c9300 Remove cyclical references to IRCBot 2018-09-28 16:51:36 +01:00
jesopo
02a2b41246 Fix typo in database_backup.py, 'ocation' -> 'location' 2018-09-27 14:06:46 +01:00
jesopo
0fb947dc5a 'full_location' -> 'location' in database_backup.py 2018-09-27 13:16:27 +01:00
jesopo
8dc83e5aac Put linebreak in a better place for @Utils.export in bot_channel.py 2018-09-27 12:10:54 +01:00
jesopo
b2bdd93f09 Change old-style event hook in coins.py 2018-09-27 12:08:26 +01:00
jesopo
6eb8b1ba6d Move all exports to @Utils.export calls 2018-09-27 12:08:07 +01:00
jesopo
8b0314b190 Use ModuleManager.BaseModule in more modules 2018-09-27 11:46:10 +01:00
jesopo
f3d98d0e95 Implement @Utils.export, to denote an export on a module 2018-09-27 11:45:23 +01:00
jesopo
6274159ac6 Fix event typo in greeting.py ("recevied" -> "received") 2018-09-27 10:27:19 +01:00
jesopo
9a7b93928b Didn't mean to commit this module yet. 2018-09-26 20:39:24 +01:00
jesopo
51a52e2b0e Switch to using @Utils.hook and docstrings for event hooks 2018-09-26 18:27:17 +01:00
jesopo
4d41848b57 Also use docstrings to check if a command has help available, allow one-string
denotation of multiple event hooks
2018-09-26 18:26:29 +01:00
jesopo
ebc77fa501 Support using docstrings as command help 2018-09-26 15:58:16 +01:00
jesopo
8d946fb60b Add !suggest, to get suggested searches from google 2018-09-26 14:36:33 +01:00
jesopo
c3e8e234eb Typo, 'e' -> 'warning' 2018-09-25 11:02:31 +01:00
jesopo
894e95d37d Fix typo that was causing database_backup.py to not work 2018-09-25 11:02:07 +01:00
jesopo
67edca067c Be more verbose about reloading modules in modules.py 2018-09-24 16:15:44 +01:00
jesopo
bb641b0870 Move log and database files to their own folders 2018-09-24 15:26:31 +01:00
jesopo
ecb9d7cb3f Move most code in root directory to src/ 2018-09-24 15:13:27 +01:00
jesopo
da7e02ffc9 Remove empty spaces in coins.py 2018-09-24 13:25:09 +01:00
jesopo
fc643cc87a last_called -> _last_called 2018-09-24 13:24:36 +01:00
jesopo
dd0ab3211e Refactor define.py 2018-09-24 13:23:59 +01:00
jesopo
967ed65e00 Actually implement !reloadallmodules in modules.py 2018-09-24 13:18:15 +01:00
jesopo
b7f7c9342b Better communicate issues with load/unload/reload of modules 2018-09-24 13:10:39 +01:00
dngfx
c3c3eba476 Fix permission bug 2018-09-23 11:09:46 +01:00
dngfx
36f0672f2b Fix permission bug 2018-09-23 11:06:15 +01:00
dngfx
1d3f05a8fe Add .reloadallmodules, and fix permissions. 2018-09-23 11:01:24 +01:00
dngfx
8b8c59ee21 Rename the functions to be more generic. 2018-09-23 10:23:12 +01:00
dngfx
a37dfe5301 Remove superfluous function. 2018-09-23 10:20:20 +01:00
dngfx
e8bdcf8f19 Remove intrusive styling. 2018-09-23 10:16:43 +01:00
dngfx
fdcf3e45c7 Add .randomword command, and change the api to use https 2018-09-23 09:52:53 +01:00
dngfx
0cb2c43ee3 Add setcoins command for admins, for people that abuse the coin game, or rewards and such. 2018-09-23 07:04:50 +01:00
dngfx
bb15f8b8e2 make last.fm say "is now playing", if they're currently playing. 2018-09-23 02:21:43 +01:00
dngfx
d335deed40 make last.fm say "is now playing", if they're currently playing. 2018-09-23 01:39:38 +01:00
dngfx
e5283ed2e2 Update last.fm to include a youtube link. Also change the module name to last.fm 2018-09-23 00:55:36 +01:00
dngfx
9220f84c27 clear channel.games properly. 2018-09-22 20:08:07 +01:00
dngfx
56afe77b52 Fix duck timing and stupid indenting. 2018-09-22 19:32:54 +01:00
dngfx
1a54c11df8 Fix ducks.py having a superfluous function 2018-09-22 19:28:57 +01:00
dngfx
febb6d66e3 font reset at the beginning of commands to stop wonkiness with highlighting and fix duck decoys. 2018-09-22 19:10:52 +01:00
dngfx
000ee14711 Make tweets say Twitter instead of tweets, and update ducks to add decoys and make minimum/unique a channel setting rather than hard setting. 2018-09-22 16:02:39 +01:00
jesopo
3c3583e30c Disable sed by default 2018-09-21 11:55:17 +01:00
jesopo
a87196c608 Change Utils.color to take a string to wrap in color 2018-09-21 11:39:09 +01:00
jesopo
ecb8698fb7 Don't send ducks when they're disabled. 2018-09-19 14:28:59 +01:00
jesopo
a0bb738abc Add eval.py 2018-09-19 14:14:51 +01:00
jesopo
287d031281 Add ModuleManager.BaseModule so modules don't *have* to implement __init__ 2018-09-19 13:28:18 +01:00
jesopo
fcbb7c960c Refactor everything to use delimited events 2018-09-19 13:25:12 +01:00
jesopo
b86ca6088f Fix some styling in ducks.py 2018-09-19 13:23:18 +01:00
jesopo
b8aca72861 Support hooking functions in modules with @Utils.hook 2018-09-19 12:37:41 +01:00
jesopo
f3d8d35083 Send a FONT_RESET (\x0F) after stderr module names because a bug in weechat
pre-2.2 means that because red colors are displayed as red+bold, the second
FONT_COLOR (\x03) only resets the red coloring, not the bold, meaning the rest
of the line is bold.
2018-09-19 02:22:30 +01:00
jesopo
b3609db92c Actually remove channels from channel_save when the bot leaves the channel 2018-09-19 01:41:53 +01:00
jesopo
702b6a4dd3 permissions._identified takes server, user and nickname 2018-09-19 01:19:04 +01:00
jesopo
2abb3c6787 Only allow the register command on networks that support internal identity 2018-09-19 00:45:14 +01:00
jesopo
e6f25e31db User.id doesn't exist anymore; it's User.get_id() 2018-09-19 00:45:01 +01:00
jesopo
11e62bb945 Fix exception in commands.py any time anyone sends an empty or
whitespace-prefixed PRIVMSG
2018-09-19 00:44:04 +01:00
jesopo
f796fddee5 Typo in sasl.py; proceed with sasl regardless of mechanism when using CAP 3.1 2018-09-17 13:25:11 +01:00
jesopo
b07da8c8c0 Fix a copypaste fail that caused sasl.py to have two sasl_success functions 2018-09-17 13:10:22 +01:00
jesopo
007ffec762 Handle 904 (ERR_SASLFAIL) in sasl.py 2018-09-17 12:57:03 +01:00
jesopo
d522997992 Don't just listen for 'sasl=PLAIN' in IRCv3 CAP 3.2 2018-09-17 11:49:23 +01:00
jesopo
fad61c2664 Support EXTERNAL sasl authentication 2018-09-17 11:31:40 +01:00
jesopo
bb5ff8ee0d Fix highlight checking in commands.py 2018-09-17 11:31:29 +01:00
jesopo
1eed727bc5 Add !enablemodule and !disablemodule to modules.py 2018-09-13 13:35:05 +01:00
jesopo
6db97c7df5 join.py -> bot_channel.py, make the bot channel (default #bitbot) configurable 2018-09-12 15:44:50 +01:00
jesopo
614f63bda3 Remove boot_time from stats.py, move it to start_time in IRCBot otherwise a
module reload of stats.py would reset !uptime
2018-09-11 18:24:34 +01:00
jesopo
ae78324c44 Typo, event["server"] -> server 2018-09-10 08:58:15 +01:00
dngfx
5d8ad6a37a Replace bit.ly with is.gd. No API key, no beeping Bit. It's a win win! 2018-09-09 21:47:28 +01:00
dngfx
169d1705ac There's nothing regular about these expressions. 2018-09-09 18:39:56 +01:00
jesopo
4eaf9e5aeb Fix an incorrect call to event["stderr"] in karma.py 2018-09-09 17:34:44 +01:00
jesopo
59912776c1 Make commands be processed under received.message.* at PRIORITY_LOW, eat the
event when it's done, change karma.py to use PRIORITY_MONITOR
2018-09-09 17:09:04 +01:00
jesopo
2a37e10533 Change default priority to "medium", add priority lower than "low" ("monitor") 2018-09-09 17:08:38 +01:00
jesopo
67c89f0580 Change bitly.py to use delimited events 2018-09-09 16:07:39 +01:00
jesopo
7f647a40c5 Tidy up indentation in tweets.py 2018-09-09 16:07:18 +01:00
dngfx
a9e49fd36b Fix up tweets.py 2018-09-09 15:50:05 +01:00
dngfx
23fbc2cb95 Make URL shortening generic in tweets.py 2018-09-09 15:37:44 +01:00
dngfx
931c941f42 Fix spacing. 2018-09-09 15:35:32 +01:00
jesopo
8959b6cfd2 Utilise !serverset in more modules 2018-09-09 13:34:25 +01:00
jesopo
2fa7d9b8a9 Add nickserv-password and sasl to !serverset 2018-09-09 13:34:25 +01:00
jesopo
c3ebb32111 Don't add a qualifier for server settings 2018-09-09 13:34:25 +01:00
jesopo
87ff49c4d2 Add !serverset and !serverget 2018-09-09 13:34:25 +01:00
jesopo
561dcdf799 Switch set.py to use delimited events 2018-09-09 13:34:25 +01:00
dngfx
a5ff20fca3 i dun fixed it! 2018-09-09 13:34:32 +01:00
dngfx
2d4dbf922f h8 everything right now 2018-09-09 13:20:59 +01:00
dngfx
7aecd2b4ca WOOP WOOP THAT'S THE SOUND OF LINKS FOR TWEETS 2018-09-09 13:12:06 +01:00
jesopo
1af290b954 Better indentation in commands.py 2018-09-09 09:09:22 +01:00
dngfx
2211cb0542 Fix a few niggles 2018-09-09 08:59:36 +01:00
dngfx
20339d0a64 Grammar fix 2018-09-09 07:38:14 +01:00
dngfx
c626a9d047 A shakespear insult generator, with optional target. Because why not? 2018-09-09 06:34:50 +01:00
dngfx
c8bbdddc59 FONT_RESET should be FONT_COLOR, also more string wizardry in ducks.py! 2018-09-09 03:39:29 +01:00
dngfx
fb3fa55477 String formatting exists and it is a wonderful thing. 2018-09-09 03:07:21 +01:00
dongfix
11f7ebaa86 Add channel prefix to .usage (So it shows .8ball <question> instead of just 8ball <question>, based on the channel's prefix)
Updated ducks.py, more efficient code and style tweaks.
2018-09-09 01:19:00 +01:00
dngfx
69543c04db Make google.py show the search term in the results. 2018-09-08 22:53:31 +01:00
jesopo
22ee129ca6 Clean up combining new.channel and __init__ channel bootstrapping 2018-09-08 22:51:56 +01:00
dngfx
3bdc43cf71 Bootstrap properly on module reload. 2018-09-08 21:58:32 +01:00
dngfx
558e2eb846 Trim garbage code. 2018-09-08 20:38:45 +01:00
dngfx
f17cce3c3d More duck timing tweaks 2018-09-08 19:58:44 +01:00
dngfx
89bc48cf0c Correct comparison 2018-09-08 19:32:10 +01:00
dngfx
83f2ec673c Typo fix. 2018-09-08 19:23:35 +01:00
dngfx
6d31f5ef3c Full metal duck. 2018-09-08 19:11:12 +01:00
dngfx
119ea1a4f6 Refactor ducks.py to make sense. 2018-09-08 19:10:09 +01:00
dngfx
a25139d828 Remove old ducks.py 2018-09-08 17:24:31 +01:00
dngfx
03b41c3d49 More 8ball answers. 2018-09-08 17:19:52 +01:00
dngfx
2efbf7ec7e Remove debug code. 2018-09-08 17:18:06 +01:00
dngfx
7023cd45d9 Remove unused code. 2018-09-08 17:16:13 +01:00
dngfx
f0c966403b Tweak duck timing. 2018-09-08 17:15:11 +01:00
dngfx
54c9616d4c 8ball answer updates and ducks.py fix. 2018-09-08 17:02:03 +01:00
dngfx
763333eea8 PEP8 Compliance. 2018-09-08 16:34:28 +01:00
dngfx
5643af1fe4 Rename ducks_old.py to stop it getting autoloaded. 2018-09-08 16:26:50 +01:00
dngfx
ac1eef729c New and fresh ducks.py! And an 8ball.py adjustment...! 2018-09-08 16:15:43 +01:00
dngfx
82a20a209a Set unique user properly. 2018-09-08 11:54:06 +01:00
dngfx
95712e5520 Ducks new progress 2018-09-08 11:51:43 +01:00
jesopo
e06fb1e3c7 Remove starttls.py, it's harder than I thought. 2018-09-07 20:22:27 +01:00
jesopo
a4f0d1bf28 Support IRCv3's tls/STARTTLS 2018-09-07 16:34:51 +01:00
jesopo
208a323d48 Listen for 903 for sasl success, not 900 2018-09-07 16:13:49 +01:00
jesopo
66e10ba11d Only "finish" a sasl handshake when we get a 900 2018-09-07 16:04:37 +01:00
jesopo
7e3d7542b9 Support CAP 3.2 2018-09-07 15:51:41 +01:00
jesopo
9be8c1d90c Set +o/+v on a user if they're in the channel at the time of !addop/!addvoice 2018-09-06 18:13:02 +01:00
jesopo
dee26c45be addvoice/removevoice should use "v" not "o" 2018-09-06 18:10:12 +01:00
jesopo
c8309d96ea Only do automode when a user is identified, also do automode on an IRCv3
ACCOUNT command
2018-09-06 18:06:29 +01:00
jesopo
25ef1965fd Finally implement auto_mode.py! 2018-09-06 17:58:53 +01:00
jesopo
e76c3b3230 Don't strip out empty arguments on commands.py 2018-09-06 17:25:58 +01:00
jesopo
73bdaff977 Add !topic and !topicappend in channel_op.py 2018-09-06 17:25:38 +01:00
jesopo
a8dd9e059f Add !ignore and !unignore in commands.py 2018-09-06 16:05:14 +01:00
jesopo
83c0022c4d Support account-tag in permissions.py 2018-09-05 15:39:29 +01:00
jesopo
07c08ad428 Typo in channel_save; channes -> channels 2018-09-05 13:55:53 +01:00
jesopo
da5b2f5eb1 Merge branch 'master' of github.com:jesopo/bitbot 2018-09-05 13:52:10 +01:00
jesopo
35f07735af
Merge pull request #17 from dngfx/master
Update duck timer
2018-09-05 13:52:07 +01:00
jesopo
049590178e Add !givecoins to coins.py 2018-09-05 13:51:42 +01:00
jesopo
a04a246b67 protect_registered doesn't exist anymore 2018-09-05 13:36:07 +01:00
jesopo
fa18d5ca4c Get user to do get_id() on in coins.py 2018-09-05 13:32:21 +01:00
jesopo
12143af562 Add another control to prevent coin duplication if someone manages to send coins
to themselves
2018-09-05 12:58:30 +01:00
jesopo
f2aeaf7797 Don't use IRCUser.id ever, use IRCUser.get_id() 2018-09-05 12:58:12 +01:00
jesopo
6bd6f2492b Support IRCv3's account-notify/extended-join along with WHOX to replace internal
register/identify
2018-09-05 11:58:10 +01:00
dngfx
5961ff1725 Update duck timer 2018-09-04 13:01:54 +01:00
jesopo
55be2a3586 twitter.py -> tweets.py 2018-09-04 11:30:00 +01:00
jesopo
be39669580 Fix a huge security issue: sign users out when they change nickname 2018-09-04 10:00:42 +01:00
jesopo
ad775239b2 Send message-tags through PRIVMSG, NOTICE and !commands 2018-09-03 21:49:22 +01:00
jesopo
b64e0078d3 Add !reconnect in admin.py 2018-09-03 18:21:13 +01:00
jesopo
d528656ba5 Add database_backup.py for rotated database backups 2018-09-03 18:20:53 +01:00
jesopo
6e257c6e1b Only offer sasl when we have sasl authentication to send 2018-09-03 12:38:51 +01:00
jesopo
06a750edbd Remove channel from autojoin when BitBot parts it 2018-09-03 12:22:06 +01:00
jesopo
9d95581c44 Support IRCv3's chghost and invite-notify 2018-09-03 11:47:11 +01:00
jesopo
6a627d9f36 Added !resetpassword in permissions.py 2018-09-03 11:30:54 +01:00
jesopo
29851d4305 Make CAP functionality more part of the framework and support message-tags and
multi-prefix
2018-09-03 11:14:52 +01:00
jesopo
61b2682c93 Add greeting.py 2018-09-03 08:29:58 +01:00
jesopo
ecc93183f5 Print mode changes in print_activity 2018-09-02 22:41:04 +01:00
jesopo
72e991f4a5 up min/max duck show time in ducks.py 2018-09-02 20:14:24 +01:00
jesopo
8c6ab17e57 give an Exports object (actually, ExportsContex object) to each module, to
facilitate things like !set and !channelset without using the events system
2018-09-02 19:54:45 +01:00
jesopo
14a9e4a6a4 Also optionally (attempt to) kick users that send malicious urls in
check_urls.py
2018-09-02 11:50:47 +01:00
jesopo
abc9d92c9d Add check_urls.py, to opt-in check for malicious urls 2018-09-02 11:44:06 +01:00
jesopo
21abbc33c8 Update reloading config on USR1 2018-09-02 11:43:52 +01:00
jesopo
cc1b4e6fde change wolframalpha.py to use the "short answer" api 2018-09-02 09:28:55 +01:00
dngfx
e305b17896 Fix iterations 2018-09-01 21:17:42 +01:00
dngfx
d6b0d4653c Fix duck stats 2018-09-01 20:55:27 +01:00
dngfx
2db5d476a4 Uncomment duck stats 2018-09-01 20:54:18 +01:00
Dan
617fbe301c
Merge branch 'master' into master 2018-09-01 20:44:56 +01:00
dngfx
9eaa1cc6fc Re-toast ducks.py! 2018-09-01 20:43:46 +01:00
dngfx
93a818ed97 Revert "Toast off ducks.py with .duckstats"
This reverts commit 3044b83
2018-09-01 20:40:26 +01:00
dngfx
3044b833fc Toast off ducks.py with .duckstats 2018-09-01 20:34:10 +01:00