Commit graph

536 commits

Author SHA1 Message Date
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
jesopo
b9d4e11b77 Add !givepermission and !removepermission to permissions.py 2018-08-28 16:53:21 +01:00
jesopo
672b22e62c Change command.py to use call_limited 2018-08-28 16:35:07 +01:00
jesopo
4922ee8f4a Allow users to see their internal IDs and channel IDs 2018-08-28 15:33:56 +01:00
jesopo
f8a6aa087b Save when a user sends their "first" words (won't be correct for old users) 2018-08-28 15:33:41 +01:00
jesopo
9a78dabcc2 80 cols! 2018-08-28 15:15:04 +01:00
jesopo
b2259c2ea8 Added !channelsetoverride in set.py 2018-08-28 14:55:57 +01:00
jesopo
b62cd4be84 .log -> .buffer, i missed this one! 2018-08-28 14:55:35 +01:00
jesopo
b699c120a0 Change how specific events assure their hooks gets the event independant of
loading order
2018-08-28 14:55:08 +01:00
jesopo
1b8c663c1a Made "you need to be authenticated" message more helpful 2018-08-28 12:48:08 +01:00
jesopo
5aa73cd64b Only allow users to send coins to users that have had coins before 2018-08-28 12:45:42 +01:00
jesopo
d8466ecf6d Require authentication to use or potentially lose coins 2018-08-28 12:42:10 +01:00
jesopo
2806a915bc Add !resetcoins in coins.py 2018-08-28 12:39:16 +01:00
jesopo
e5a5fa5c4b modules/logging.py -> IRCLogging.py; IRCLog.py -> IRCBuffer.py; change logging
to be an object on the server object instead of an event call
2018-08-28 12:23:57 +01:00
jesopo
ea9b6f32dc Prevent users sending coins to themselves 2018-08-25 20:09:44 +01:00
jesopo
1ae1206b8a .add -> .append typo in channel_save.py 2018-08-19 00:20:24 +01:00
jesopo
9a3f2e5de6 Change the database to give channels and users ids and use those in the settings
tables
2018-08-19 00:19:53 +01:00
jesopo
88eb7b695f show uptime in 1w1d1h1m1s format 2018-08-18 21:54:12 +01:00
jesopo
33b48f5ea3 .wrote -> .write typo in words.py 2018-08-18 18:29:06 +01:00
jesopo
4da8a4ac39 Added code to preprocess check a command that only requires authentication, not
a permission
2018-08-18 18:28:41 +01:00
jesopo
054a98c0c8 Added !resetkarma in karma.py 2018-08-18 18:28:27 +01:00
jesopo
dacf74e2b1 Show spin colour, make sure there's bet amounts for all bets, fix street regex,
show total winnings and support low/high for !roulette in coins.py
2018-08-18 18:26:47 +01:00
jesopo
84a793caf2 Support multiple bets in one go with !roulette in coins.py 2018-08-16 11:54:51 +01:00
jesopo
8ef02fdbd8 Added streets and big/small to !roulette 2018-08-15 18:33:14 +01:00
jesopo
eb3155d3e0 implemented !roulette in coins.py 2018-08-15 17:55:05 +01:00
jesopo
bc6278f9df username -> lastfm_username 2018-08-15 10:34:58 +01:00
jesopo
51cf5c56d4 save !to commands for the target user, not the user sending the command! 2018-08-13 18:19:17 +01:00
jesopo
0f09184e48 Add setting to prevent sending a random quote on quit 2018-08-13 16:04:27 +01:00
jesopo
63418dc0f3 Don't show actual lastfm name unless it was explicitly provided 2018-08-13 16:04:08 +01:00
jesopo
b369f5d6e8 Use regex match to avoid coin values less than 0.01 2018-08-13 16:01:06 +01:00
jesopo
d89fcbfe46 Round up when checking zeroness 2018-08-10 14:00:33 +01:00
jesopo
6709fa1878 Prevent highlighting users in !wordusers and !richest 2018-08-10 13:56:45 +01:00
jesopo
fed2d64739 don't permit 0-coin flips 2018-08-10 13:56:00 +01:00
jesopo
b24e37fed6 fixed filtering out bankrupt users from !richest 2018-08-10 12:59:06 +01:00
jesopo
922ff5ac84 Fix "decimal" typo in !richest 2018-08-10 12:54:19 +01:00
jesopo
a385270cb9 Switch to using Decimal in coins.py, floats are weird! 2018-08-10 12:22:41 +01:00
jesopo
155bf689ea Have 2 decimal places for coins! 2018-08-10 10:28:43 +01:00
jesopo
8d50b702f3 A 10 second interval for interest rates is not good 2018-08-10 10:28:24 +01:00
jesopo
760b46979d stderr not stdout, int() interest rates and actually redo interest rates every
hour
2018-08-09 18:02:29 +01:00
jesopo
a114390cde Allow users to see other people's coins 2018-08-09 16:37:55 +01:00
jesopo
1cc83a4a38 Fix more issues with referencing "server" in interest() in coins.py 2018-08-09 16:13:17 +01:00
jesopo
e477e8f04f "wins/loses %d coin(s)!" instead of "wins/loses %d!" 2018-08-09 16:11:46 +01:00
jesopo
e113ec23d9 Add help strings for stats.py 2018-08-09 15:16:35 +01:00
jesopo
4502256263 Fix wrong method of referencing server in timer callback 2018-08-09 15:16:15 +01:00
jesopo
67e030155d Added interest rates in coins.py, filter out 0 for !richest 2018-08-09 14:22:25 +01:00
jesopo
213bf999b9 Changed find_all_by_setting to not return setting, added !richest 2018-08-09 13:49:44 +01:00
jesopo
3e8f10dff5 More grammar 2018-08-09 13:35:31 +01:00
jesopo
f6058594f6 Round up redeem-delay time, allow users to send coins 2018-08-09 13:18:05 +01:00
jesopo
beb2b4a606 Only allow !redeemcoins when you have no coins 2018-08-09 12:34:12 +01:00
jesopo
7c1fce17cd Remove print in coins.py, fixed grammar a little 2018-08-09 12:29:51 +01:00
jesopo
c1193774f0 Added coins.py 2018-08-09 12:24:09 +01:00
jesopo
e424e3b294 fixed typos in !channelget 2018-08-08 20:49:34 +01:00
jesopo
ee86848b62 Added !get and !channelget 2018-08-08 20:45:57 +01:00
jesopo
fda3d65d53 Added a setting to disable ctcp responses 2018-08-08 13:41:25 +01:00
jesopo
2e9ce67586 Also track BitBot's words in words.py 2018-08-08 10:33:33 +01:00
jesopo
bb53f6f565 get highlight-spam-protection setting before highlight-spam-threshold 2018-08-06 14:27:49 +01:00
jesopo
0ab7c11cb8 use TimeRotatingFileHandler in logging.py 2018-08-05 20:44:35 +01:00
jesopo
400aaf43d0 also empty command stdout when there's no !more 2018-08-05 20:43:52 +01:00
jesopo
b128eb170b Grammar is important 2018-08-05 20:43:42 +01:00
jesopo
6a7369f7de changed words.py to use new user_channel_settings table 2018-08-05 17:16:15 +01:00
jesopo
7114bb7155 only get "sed" setting when a message that looks like a sed command comes in 2018-08-05 15:35:23 +01:00
jesopo
c2c60e309a Improve using correct nickname capitalisation in words.py 2018-08-05 13:14:40 +01:00
jesopo
7698105761 When a user is online, use correct capitalisation in !wordusers 2018-08-05 13:12:07 +01:00
jesopo
1af821123b only set autojoin when we've joined a channel not in our autojoin list 2018-08-05 12:57:19 +01:00
jesopo
38a518f1fa Change to.py to use user_channel_settings in to.py and set priority to MEDIUM to
avoid !to to one's self sending two messages
2018-08-05 12:53:02 +01:00
jesopo
6b1641c438 Put milliseconds in logging.py 2018-08-05 12:13:25 +01:00
jesopo
06289171fa Actually add event hook for CRITICAL 2018-08-05 11:54:24 +01:00
jesopo
4962b11199 Add CRITICAL log level to logging.py 2018-08-05 11:52:50 +01:00
jesopo
f143169cb5 only try to delete !to messages when there are any 2018-08-05 11:42:40 +01:00
jesopo
5e42608ead Improved logging, added TRACE logging in Database.py to see how it performs 2018-08-05 11:30:43 +01:00
jesopo
fbd6975351 Remove debug print, improve wikipedia.py 2018-08-04 12:48:38 +01:00
jesopo
65feaef283 Add help for !words 2018-08-03 16:25:27 +01:00
jesopo
45dca53497 it's "#--ignore" not "#!--ignore" 2018-08-03 14:29:37 +01:00
jesopo
e2e395c352 Revamped words.py to track words per user per server so we're not writing a huge
json string to sqlite every time someone says a tracked word
2018-08-03 13:44:50 +01:00
jesopo
7caf45e77e Grammer is important 2018-08-03 11:40:33 +01:00
jesopo
84ea92fea8 get user permissions every time they try to use a command that requires
permissions, instead of caching their permissions when they sign in
2018-08-02 23:00:42 +01:00
jesopo
1c50a27564 Added missing ")" in print_activity.py 2018-07-31 08:48:37 +01:00
jesopo
b8145dd60d support optional data in upc.py 2018-07-25 13:43:13 +01:00
jesopo
f751d85824 add !gtin to upc.py 2018-07-25 13:06:31 +01:00
jesopo
a7a28adde7 Add upc.py 2018-07-25 13:05:37 +01:00
jesopo
46e124a5db Included notices in print_activity, don't always print channel name 2018-07-23 10:20:00 +01:00
jesopo
ad68527688 remove debug print in books.py 2018-07-22 20:55:16 +01:00
jesopo
8cf45c2432 rating, date and authors are optional in google's book apis 2018-07-22 20:53:44 +01:00
jesopo
e73d056b34 include quit reasons in print_activity if present 2018-07-20 13:12:55 +01:00
jesopo
270bfe58ed Ban formats aren't bools 2018-07-20 13:12:41 +01:00
jesopo
6213ba5f61 added a way to prevent bitbot accepting invites 2018-07-19 14:39:29 +01:00
jesopo
e99671aced Added a channel setting for banmask, added !unban 2018-07-19 14:39:10 +01:00
jesopo
d0ef4432b3 move sending CAP sasl request to sasl.py 2018-07-16 21:41:39 +01:00
jesopo
d385d73dab use PRIORITY_URGENT in perform.py 2018-07-16 00:41:08 +01:00
jesopo
2012a388da move sasl logic to it's own module 2018-07-15 23:56:06 +01:00
jesopo
2b30ffc71b fix print_activity still using old EventManager priority location 2018-07-15 23:55:21 +01:00
jesopo
66397cb24a Made part/quit print_activity functions more uniform 2018-07-15 15:22:37 +01:00
jesopo
d3e8920e2a Use QUOTES.items() in quit.py 2018-07-15 15:19:11 +01:00
jesopo
68298bbccf Added EventHook.call_for_result to get a result or default from an event 2018-07-15 15:15:52 +01:00
jesopo
06de65b1c1 Move quit quotes to it's own module 2018-07-15 15:09:11 +01:00
jesopo
01f9f51ef2 print_messages->print_activity, print more things! 2018-07-15 14:14:20 +01:00
jesopo
718da30728 skip !more's out/err, added a way to split messages from their prefixes for
logging purposes
2018-07-14 09:50:12 +01:00
jesopo
7d9f3dc6e4 Allow translate source/target languages to be more than 2 chars 2018-07-14 09:06:52 +01:00
jesopo
d12b61620d Implemented delimited "event chains" and changed pong.py to use it 2018-07-08 11:18:55 +01:00
jesopo
84cc65526f Track user channel modes by user object, not nickname 2018-07-02 16:15:26 +01:00
jesopo
ae9d715e55 Added guid functionality to random_number.py 2018-07-02 14:45:25 +01:00
jesopo
dc0babe599 Accept http and https soundcloud urls 2018-07-02 14:34:46 +01:00
jesopo
50bf76d795 Add logic in soundcloud.py to accept urls and search back through log for urls 2018-07-02 14:33:38 +01:00
jesopo
b27610e23d Fixed translate.py 2018-07-02 12:51:36 +01:00
jesopo
7affd3b9f3 Add missing on_kick event hook in channel_save 2018-07-02 12:51:18 +01:00
jesopo
cb486d6122 random.py -> random_number.py due to name collision (stdlib) 2018-07-02 11:09:49 +01:00
jesopo
3c138c1d18 If BitBot is kicked from a channel, remove from channel_save 2018-07-02 11:09:22 +01:00
jesopo
464510cd80 OMDBAPI now needs an api key 2018-07-02 11:09:02 +01:00
jesopo
d84cb62180 Added first version of print_message to prettyprint log certain activities 2018-05-02 07:30:16 +01:00
jesopo
11ddb1fca5 Remove rickroll 2018-05-02 07:20:52 +01:00
jesopo
dcd0c0a542 Use IRCServer.original_nickname in perform.py as we might not have our "given" nickname yet 2018-05-02 07:20:13 +01:00
Evelyn
b85d7bd3b5 NR: Don't titlecase Eagle station names. This is already done. 2018-02-04 09:42:09 +00:00
Evelyn
840fbcdb10 Merge branch 'master' of github.com:jesopo/bitbot 2018-02-04 09:27:54 +00:00
Evelyn
922ba20117 NR: Eagle endpoints are now under /json/ going forward 2018-02-04 09:27:35 +00:00
jesopo
5794b3cd92 Added option to ban highlight spammers instead of just kicking them 2017-12-26 13:51:10 +00:00
jesopo
14ffa6716d Added highlight spam detection/prevention logic to channel_op 2017-12-26 11:50:18 +00:00
jesopo
0cc72d5d66 Added a "replay" system to EventManager hooks, to replay missed .calls 2017-12-26 10:32:36 +00:00
Evelyn
62ac516d1f NR: Indicate interesting activity at locations 2017-12-10 15:20:48 +00:00
Evelyn
c6572bd6f4 NR: 0000 if headcode None 2017-12-04 18:28:13 +00:00