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
dngfx
8098e8c015
re-add self.events
2018-09-01 19:12:05 +01:00
jesopo
e9b5519e86
re-add self.events in ducks.py
2018-09-01 19:11:25 +01:00
jesopo
cbb6c928a1
Don't persist timer, use events.on("send.stdout")
2018-09-01 19:09:25 +01:00
jesopo
23f859beb2
Don't persist timer, use events.on("send.stdout")
2018-09-01 19:07:50 +01:00
dngfx
0869c17808
Massively optimise ducks.py and remove a bunch of cruft.
2018-09-01 18:58:57 +01:00
dngfx
a0a29eacd0
Convert to booleans and validation.
2018-09-01 18:45:01 +01:00
jesopo
ef645c338a
BitBot is single threaded!
2018-09-01 12:24:00 +01:00
dngfx
090531c0ae
Omg I can't spell.
2018-09-01 11:45:29 +01:00
Dan
ba065ad646
omg it's the future ( #15 )
...
* Add Database.UserChannelSettings.find_all_by_setting
* Turns out we didn't need find_all_by_setting
* Actually, we do need find_all_by_setting
* Table name typo
* Add Utils.bold and Utils.underline
* Added functionality to load, unload and reload modules from a command!
2018-09-01 11:40:57 +01:00
dngfx
7db9a8ea2b
Move lists out of scope
2018-09-01 11:40:08 +01:00
dngfx
80cbf2d66e
Add 8ball module
2018-09-01 11:04:51 +01:00
dngfx
0a96a79077
Cosmetic enhancement for ducks and dice.
2018-09-01 10:52:04 +01:00
dngfx
3f66940e77
Remove superfluous code from ducks.py and introduce dice.py (DND rolling function .roll 1d20)
2018-09-01 10:22:44 +01:00
dngfx
3d3cb9a598
Switch print() to log.info() for next-duck-wave information.
2018-09-01 09:09:02 +01:00
dngfx
e5d298af60
Fix this back to channel.send_message(), stdout just no.
2018-09-01 02:21:57 +01:00
dngfx
cc21f1d9a3
Set a timer for sending out ducks randomly, and change some messages to stdout.
2018-09-01 01:56:07 +01:00
dngfx
4a9d823d54
Adjust timing for production.
2018-08-31 18:31:46 +01:00
dngfx
06466187b6
Introduce .killers for ducks.py
2018-08-31 18:23:46 +01:00
dngfx
7e06e06ee0
THE OVERLORD DEMANDS I TRASH IT
2018-08-31 17:04:15 +01:00
dngfx
4b654ed12d
Change to stdout because i'm a pillock.
2018-08-31 17:02:46 +01:00
dngfx
95d1475f2c
.friends support! Yay, lets be friends.
2018-08-31 16:58:25 +01:00
dngfx
6e400a5470
Just duck things~
2018-08-31 16:06:11 +01:00
dngfx
bce8cef524
Migrate duck data to user_channel_settings.
2018-08-31 14:36:25 +01:00
dngfx
0f1e683cd3
Where on earth did this PHP relic come from?
2018-08-31 14:16:27 +01:00
dngfx
0bb3ae9273
Fix decoys stacking up and attempting to take over irc.
2018-08-31 14:10:20 +01:00
dngfx
309b119ec5
That commit was just a decoy.
2018-08-31 14:00:09 +01:00
dngfx
a6d2f4cd5b
Decoy Fiddling
2018-08-31 13:58:44 +01:00
jesopo
6f2da2c40f
Remove print in ducks.py
2018-08-31 13:44:39 +01:00
jesopo
b7cf524e98
Give modules event objects with "context"s, to facilitate purging all the event
...
hooks for a module
2018-08-31 13:44:39 +01:00
dngfx
90ce92dc39
Revert "Reformat"
...
This reverts commit abed9cf
2018-08-31 10:51:47 +01:00
dngfx
abed9cf4ea
Reformat
2018-08-31 10:50:37 +01:00
dngfx
391671185d
A start on .decoy for ducks.
2018-08-31 06:27:41 +01:00
dngfx
301d3cb45a
Revert the god awful database edits I made and make ducks.py convert to int. Might be an idea to make a make_int function?
2018-08-31 05:48:53 +01:00
dngfx
a635b1f0a0
Apparently i auto-reformatted the code. Either way I fixed ducks spawning endlessly.
2018-08-31 04:35:42 +01:00
dngfx
8d6f0fffa9
Make channel values being inserted into SQLite integers if they're numbers.
...
Update ducks.py, you can now .bef and .bang! Coming soon: .friends, .killers, and .ducks
Update google to use gb instead of us. We're British goddamnit.
2018-08-31 04:14:56 +01:00
dngfx
e272d50f49
Update strax generator with a bunch of new phrases and attacks.
2018-08-30 18:11:17 +01:00
jesopo
d37fc44343
use assure_call for trakt.py and lastfm.py
2018-08-30 18:07:50 +01:00
dngfx
377b7d39df
Update strax generator with a bunch of new phrases and attacks.
2018-08-30 16:57:45 +01:00
dongfix
b13c971507
Update strax generator to make more sense when exclaiming instead of questioning.
2018-08-30 16:17:15 +01:00
jesopo
dceeef8648
Add missing comma in strax.py
2018-08-30 16:15:24 +01:00
dongfix
f6f183c2bd
Fix strax.py to randomise other things and fix random choice 1,2
2018-08-30 16:03:54 +01:00
dongfix
fd94b939e0
Add strax.py .strax command.
2018-08-30 15:55:57 +01:00
jesopo
ebd3ab47c8
Add missing "," in channel_op.py
2018-08-30 11:15:57 +01:00
jesopo
2d4a1d42ce
Only get highlight-spam-threshold setting when there's more than one highlight
...
in a line
2018-08-30 11:14:19 +01:00
jesopo
49cc4d8d7b
Add help and usage for commands in channel_op.py
2018-08-30 11:13:26 +01:00
jesopo
ceb73f586c
Only show 2 biggest units in !seen
2018-08-29 15:52:04 +01:00
jesopo
669aa32c31
Report actual topic setter (use 333, not 332)
2018-08-29 15:17:06 +01:00
jesopo
3ec521538a
Print topics in print_activity.py
2018-08-29 14:57:40 +01:00
jesopo
76d7a8de36
Delete "permissions" setting when it's empty
2018-08-29 14:34:52 +01:00
jesopo
6ecae3b261
Add the ability to only require authentication if your nickname is registered
2018-08-28 18:16:19 +01:00