Commit graph

2019 commits

Author SHA1 Message Date
jesopo
7508b0f5e7 Switch back to only taking losses when they're losses, instead of taking payin
and then giving it back after the roulette spin
2018-10-23 13:20:13 +01:00
jesopo
db5d9fdb42 _take already gives back to pool 2018-10-23 13:19:51 +01:00
jesopo
7c04ff2e89 Don't try to parse wallet args as a bet amount in modules/coins.py 2018-10-23 00:36:02 +01:00
jesopo
69ebba27bb Roulette wins should include the payin 2018-10-22 20:23:28 +01:00
jesopo
046e8935df When deleting a wallet, shift funds to default 'in' wallet instead of assuming a
user has a 'default' named wallet
2018-10-22 16:49:20 +01:00
jesopo
e4be2cf339 Fix indication of optionalness of wallet param of !defaultwallet 2018-10-22 16:23:56 +01:00
jesopo
2e6db95574 Copypaste fail in modules/coins.py, 'row' -> 'i' 2018-10-22 14:23:09 +01:00
jesopo
1614ad9c48 Add lcorner/rcorner bets to !roulette in modules/coins.py 2018-10-22 14:22:10 +01:00
jesopo
84b4a064b8 Add double streets to !roulette in modules/coins.py 2018-10-22 14:11:32 +01:00
jesopo
399e20acc7 Fix copypaste fail in modules/coins.py.move_coins 2018-10-22 14:01:34 +01:00
jesopo
ddcd99405a Add !movecoins in modules/coins.py 2018-10-22 13:59:25 +01:00
jesopo
77cf1a6afe Dict are immutable, duh. 2018-10-22 13:14:08 +01:00
jesopo
c6b8e4487d Typo in help string in modules/coins.py, 'By' -> 'Buy' 2018-10-22 13:13:54 +01:00
jesopo
ec96eda1a3 _default_wallet is not _default_wallet_for 2018-10-22 13:13:30 +01:00
jesopo
8e2a3be90d _default_wallets takes a user param 2018-10-22 13:13:13 +01:00
jesopo
d4aef86f7e _default_wallet_for is for find the default type of a given wallet, not the
wallet for a given default type
2018-10-21 12:16:05 +01:00
jesopo
da5a53c9e0 Add missing .items() to dict iteration in modules/coins.py 2018-10-21 12:14:09 +01:00
jesopo
dd99460390 Show default wallet for wallet types when you don't specify 2 args to
!defaultwallet
2018-10-21 12:13:08 +01:00
jesopo
e614eb8e75 'DEFAULT_WALLETS' -> 'WALLETS_DEFAULTS' 2018-10-21 12:10:44 +01:00
jesopo
42123442dc Add missing "," in modules/coins.py 2018-10-21 12:09:35 +01:00
jesopo
4dbad92f3b use default "interest" wallet for interest and default "lottery" wallet for
lottery winnings
2018-10-21 12:08:29 +01:00
jesopo
30a1631edc 'WALLET_DEFAULT' -> 'WALLET_DEFAULT_NAME' 2018-10-21 12:00:19 +01:00
jesopo
87b3c47bcb prevent !removewallet on any wallet that's configured as a default 2018-10-21 11:57:06 +01:00
jesopo
733d954dc8 Add configurable default wallets for different actions! 2018-10-21 11:52:12 +01:00
jesopo
b69e334ad0 wallet args in !roulette need to have their position calculated! 2018-10-21 08:21:58 +01:00
jesopo
8ea6db9422 Standardise "Failed to load results" errors! 2018-10-20 20:53:24 +01:00
jesopo
90c730979a Typo in modules/coins.py, 'nickanme' -> 'nickname' 2018-10-20 19:08:46 +01:00
jesopo
7a94c1efff _take takes a server param 2018-10-20 14:07:24 +01:00
jesopo
a47542bb5b Add wallets to usage strings and add missing help in modules/coins.py 2018-10-20 14:00:28 +01:00
jesopo
e7bece4621 Use the correct arg_split index for parsing wallet in !givecoins 2018-10-20 13:55:47 +01:00
jesopo
44c67ad5d9 Typo in modules/channel_op, 'this' -> 'self' 2018-10-19 14:37:24 +01:00
jesopo
94a3461d39 Parse in/out wallet in the context of their relevant users 2018-10-19 13:03:21 +01:00
jesopo
b9d5db821e We should be using _take, not _set_user_coins in !roulette 2018-10-19 12:12:27 +01:00
jesopo
ae07ea9da1 Actually by-default give people the default wallet 2018-10-19 11:50:11 +01:00
jesopo
093ff298ec Use genexprs for sum() throughout modules/coins.py 2018-10-19 11:48:21 +01:00
jesopo
a5c9568d23 send() should check all user coins when checking for redeem-amount 2018-10-19 11:47:34 +01:00
jesopo
71da117060 _default_wallets takes a user param 2018-10-19 11:44:59 +01:00
jesopo
b930f3c0cf Dangerous typo in modules/coins.py - 'wallet' -> 'wallets' 2018-10-19 11:38:23 +01:00
jesopo
303640844d Typo in modules/coins.py, 'DEFAUT' -> 'DEFAULT' 2018-10-19 11:35:25 +01:00
jesopo
ba1079d661 Protect against unknown wallets, show "new total" of output wallet when a coin
flip is won
2018-10-19 11:34:18 +01:00
jesopo
ab4f65f8de Correctly pass wallet through in _give/_take/_move 2018-10-19 11:24:44 +01:00
jesopo
3e65983fbc _user_has_wallet takes a user param! 2018-10-19 11:21:37 +01:00
jesopo
472c4fb1f3 Typo in modules/coins.py, "len(list > 2)" -> "len(list) > 2" 2018-10-19 11:15:41 +01:00
jesopo
74330f5dee Add another missing ")" in modules/coins.py 2018-10-19 11:00:57 +01:00
jesopo
43bf2b9935 Add missing ")" in modules/coins.py 2018-10-19 11:00:02 +01:00
jesopo
8fae2394cb Allow users to add/remove wallets and specify which wallets to use with
commands that effect coins!
2018-10-19 10:58:36 +01:00
jesopo
87fc3cda55 Catch exceptions in modules/title.py 2018-10-19 10:31:45 +01:00
jesopo
fc36e5bbeb Typo in modules/coins.py, 'user' -> 'event["user"]' 2018-10-18 15:26:28 +01:00
jesopo
f5ac44f1c6 _user_has_wallet takes a user arg 2018-10-18 15:25:42 +01:00
jesopo
d2557cbc4f Show the coins a user has in a specified wallet when a wallet is specified to
!wallet
2018-10-18 15:24:33 +01:00
jesopo
79c4a357d7 Typo in modules/coins.py, 'commands' -> 'command' 2018-10-18 15:20:05 +01:00
jesopo
07903c15ff put "default" wallet in to a const, pass wallet arg through function calls, add
!wallet
2018-10-18 15:18:16 +01:00
jesopo
79837fe6a4 Remove debug print in modules/coins.py 2018-10-18 14:31:51 +01:00
jesopo
3ab30ad6d8 Change interest rates to use wallets 2018-10-18 14:28:48 +01:00
jesopo
8388c6e05a Remove now-unneeded code, change _total_coins to use _all_coins 2018-10-18 13:49:32 +01:00
jesopo
c3fb63e03c Typo in modules/coins.py, 'wallet' -> 'user_coins' 2018-10-18 13:45:38 +01:00
jesopo
ebdbc75a7e coins should be (nickname, coins) not just coins 2018-10-18 13:43:26 +01:00
jesopo
7f8acf58c7 Typo in modules/coins.py, "coin_settings" -> "coins" 2018-10-18 13:40:36 +01:00
jesopo
1300310669 Use "wallets" for !richest, not "coins" 2018-10-18 13:38:54 +01:00
jesopo
b799f543a9 Internally use "wallets" to track users coins 2018-10-18 13:19:16 +01:00
jesopo
bd52297885 "," -> ", " in modules/words.py 2018-10-18 12:54:37 +01:00
jesopo
226d835374 Add !trackedwords in modules/words.py 2018-10-18 12:53:27 +01:00
jesopo
c1e5fd9a52 Coin amount is the second arg to !givecoins 2018-10-17 19:39:43 +01:00
jesopo
dd93a84f80 Put .strip("\n") call in the right place in modules/eval_python.py 2018-10-17 17:31:59 +01:00
jesopo
69f9aab4b9 Refer to out["out"], not just out, to get the output from eval 2018-10-17 15:11:05 +01:00
jesopo
10d403d24a Import json in modules/eval_python.py 2018-10-17 15:09:59 +01:00
jesopo
cfb9fa1c2e import json in EVAL_TEMPLATE and json parse response from eval api 2018-10-17 15:08:48 +01:00
jesopo
ecb2b1331a 'import StringIO' -> 'import io' in modules/eval_python.py 2018-10-17 15:06:54 +01:00
jesopo
f08624ddbd Escape \n in EVAL_TEMPLATE in modules/eval_python.py 2018-10-17 15:04:38 +01:00
jesopo
baa039e86d Add missing ":"s in EVAL_TEMPLATE in modules/eval_python.py 2018-10-17 15:03:41 +01:00
jesopo
3d34896beb Better handling of eval errors in modules/eval_python.py 2018-10-17 15:02:04 +01:00
jesopo
11944e348b Remove additional ")"s in modules/eval_python.py 2018-10-17 14:32:01 +01:00
jesopo
34c13c7916 html.unescape output in modules/eval_python.py 2018-10-17 14:30:59 +01:00
jesopo
2e54284fed Re-add new_coins variable in modules/coins.py.lottery, used for telling a user
what their balance is after winning the lottery
2018-10-17 14:18:14 +01:00
jesopo
c22d5a348f We should be changing bet_amounts instead of parsing a bet amount and doing
nothing with it :l
2018-10-17 08:40:23 +01:00
jesopo
95e98563d5 Typo on modules/set.py; 'events.call' -> 'events.on' 2018-10-16 23:13:19 +01:00
jesopo
b467220400 Typo in modules/coins.py; 'utils._parse_coins' -> 'self._parse_coins' 2018-10-16 17:17:10 +01:00
jesopo
547c57c8b8 str(utils.EventError) should be written to stderr, not stdout 2018-10-16 15:15:20 +01:00
jesopo
d07f9422f7 all_coins is a dictionary, thus needs .items() to turn it in to nickname, coins 2018-10-16 15:10:21 +01:00
jesopo
773d11f6cb Change all instances of stdout.write+return to raise utils.EventError in
modules
2018-10-16 15:09:58 +01:00
jesopo
42a1cda92c 'EventManager.EventError' -> 'utils.EventError' in modules/commands.py 2018-10-16 14:49:01 +01:00
jesopo
ba3cd00c78 Add utils.EventError, utilise it for stderr in commands.py/coins.py 2018-10-16 14:47:01 +01:00
jesopo
7a54076de1 Typo in modules/coins.py.send(), 'target' -> 'target_user' 2018-10-16 14:46:08 +01:00
jesopo
0c7c48d752 Move redeem-amount/redeem-delay logic to their own functions in modules/coins.py 2018-10-16 14:06:38 +01:00
jesopo
5d6a7a60eb Move logic to get all coins to it's own function in modules/coins.py 2018-10-16 13:58:02 +01:00
jesopo
ff7ac9fe89 Add missing help strings to commands in modules/coins.py 2018-10-16 13:53:32 +01:00
jesopo
7411c493f9 Move some more str(coins) calls to _coin_str(coins) in modules/coins.py 2018-10-16 13:46:25 +01:00
jesopo
1eab3178b3 Remove unneeded complexity in modules/coins.py.reset_coins 2018-10-16 13:43:45 +01:00
jesopo
7eb65ac1da modules/coins.py._take should have a server param 2018-10-16 13:41:02 +01:00
jesopo
5fc57ca143 Move logic for "take from user, give to pool" (and visa-versa) it's own
function, put user-to-user sending it's own function too
2018-10-16 13:39:45 +01:00
jesopo
955716c482 Remove more code duplication in modules/coins.py; move parsing amounts of coins
in to it's own function
2018-10-16 13:26:29 +01:00
jesopo
8aafa219ec Remove a large amount of code duplication in modules/coins.py 2018-10-16 13:05:55 +01:00
jesopo
743b3bc754 event["args"] is an array already, args_split does not exist. Also send raw
events from src/IRCServer.py as call_unsafe to make errors like that more
apparent.
2018-10-15 14:29:16 +01:00
jesopo
131ae4b40d Correctly check if someone's logged in to an account with extended-join 2018-10-15 14:16:11 +01:00
jesopo
be95fb8a6d event["server"] -> server in modules/coins.py 2018-10-14 19:43:46 +01:00
jesopo
54ba3c888c Catch ValueError from utils.parse_number, to allow other code to deal with
complaining about invalid numbers
2018-10-14 15:27:49 +01:00
jesopo
0ed0b235e9 Work directly from users in modules/coins.py.interest(), so as to not give
double-interest to two "users" online at the same time sharing the same identity
2018-10-14 14:30:19 +01:00
jesopo
a43d1cbb91 Add !lotterywinner in modules/coins.py, to show who last won the lottery 2018-10-14 13:51:32 +01:00
jesopo
104e1ab185 Actually return in modules/coins.py._total_coins 2018-10-14 08:38:58 +01:00
jesopo
403227b6df Check automode when BitBot joins a channel 2018-10-13 22:21:51 +01:00
jesopo
f40db7c9d2 Add missing ) in modules/coins.py 2018-10-13 22:20:40 +01:00
jesopo
c6f8754716 Move functionality of finding total in-circulation coins out to it's own
function
2018-10-13 16:57:18 +01:00
jesopo
b2f948a73b Add !totalcoins in modules/coins.py, to check what the total coins in
circulation is
2018-10-13 16:47:46 +01:00
jesopo
381b00f2cd Only get list of github-hook channels once 2018-10-13 09:16:22 +01:00
jesopo
912c693fcd !lotterybuy should require authentication because it uses coins 2018-10-13 01:16:18 +01:00
jesopo
bb531a6104 'redude' -> 'reduce' (my redudes), import random because i forgot to, don't
try to do lottery for networks that have no lottery tickets purchased
2018-10-13 01:14:07 +01:00
jesopo
00e5890a92 Fixed incorrect comment about what counts as high/low for roulette in
modules/coins.py
2018-10-13 00:44:04 +01:00
jesopo
95b398c422 Give coins lost to the house in roulette to the Bank 2018-10-13 00:32:27 +01:00
jesopo
4fc0ee09b6 Typo in modules/coins.py, 'redcude' -> 'reduce' 2018-10-12 20:20:47 +01:00
jesopo
59bc75988b Default !lotterybuy to 1 ticket 2018-10-12 20:20:32 +01:00
jesopo
c5b07f520e Add !nextlottery to modules/coins.py 2018-10-12 18:33:34 +01:00
jesopo
ed03279406 Correct the logic used to find the time until the next lottery 2018-10-12 18:31:28 +01:00
jesopo
819f4e0680 Pass context-wrapped timers to each module, add ModuleManager.BaseModule.on_load 2018-10-12 18:07:23 +01:00
jesopo
278ab7d76f Use UTC in modules/coins.py 2018-10-12 17:53:57 +01:00
jesopo
d4b46360d4 Implement 4-times-daily lottery in module/coins.py and address all stderrs to
the relevent user
2018-10-12 17:40:37 +01:00
jesopo
dda60ae417 _give_from_pool/_take_from_pool take a server argument 2018-10-12 16:27:59 +01:00
jesopo
bab555207c Show cents in !bank balance in modules/coins.py 2018-10-12 16:08:22 +01:00
jesopo
54ad29cc3a Introduce a finite coin system in modules/coins.py 2018-10-12 15:55:32 +01:00
jesopo
8b03ecef21 Change modules/in.py to use bot.get_server 2018-10-12 14:04:14 +01:00
jesopo
a15a2e3444 modules/coins.py.send should be checking user_coins before the send amount is
taken away, not after
2018-10-12 13:53:15 +01:00
jesopo
8eb5c11979 ' -> " in modules/eval_python.py 2018-10-12 13:23:54 +01:00
jesopo
c66b376e7f Use compile+eval to support statements and expressions 2018-10-12 13:18:06 +01:00
jesopo
4700402db4 Add a \n between potential prints in eval() and printing the return from eval so
that bitbot will only show one of them
2018-10-12 12:46:05 +01:00
jesopo
b884b0e170 Support py2 and py3 in eval_python 2018-10-12 12:39:01 +01:00
jesopo
b2dd75d68f Use a more reliable API for evaling python 2018-10-12 11:56:13 +01:00
jesopo
f096bddff4 Support unit-based bets (1k/1m/1b) in modules/coins.py 2018-10-12 11:19:41 +01:00
jesopo
e96c983dca Check a channel's automode when automode is turned on in modules/auto_mode.py 2018-10-12 10:57:47 +01:00
jesopo
787053b605 Fire an event when a user/channel/server/bot setting is set in modules/set.py 2018-10-12 10:57:11 +01:00
jesopo
6e605207e6 Add !todomove in modules/todo.py 2018-10-12 10:49:38 +01:00
jesopo
382728e83e Add ` and * to characters stripped from start/end or words in modules/words.py 2018-10-12 08:38:29 +01:00
jesopo
3d2acc2f61 Don't calculate user_coins(+/-)coin_bet twice 2018-10-11 14:13:37 +01:00
jesopo
a9202a6abf Add !py as an alias of !python in modules/eval_python.py 2018-10-11 13:32:28 +01:00
jesopo
df150635df Correct the way !givepermission checks if a user is identified 2018-10-11 13:16:55 +01:00
jesopo
2c815f4bbc Strip specific characters from the front of words too (and add more characters
to strip from the end) in modules/words.py
2018-10-11 13:04:54 +01:00
jesopo
0e2140b99f Also strip "." from the end of words in modules/words.py 2018-10-11 12:56:18 +01:00
jesopo
98cdfa6419 Strip common characters that mark the end of a word (":;,!?~") from the end of
words in modules/words.py
2018-10-11 12:55:19 +01:00
jesopo
1c2504ac98 Add modules/rot13.py 2018-10-11 12:44:22 +01:00
jesopo
23b7223fae Add !syncmodes in modules/auto_mode.py, fire internal.identified in
modules/permissions.py and catch it in modules/auto_mode.py to give users modes
when they identify using the internal identity mechanism
2018-10-11 11:20:53 +01:00
jesopo
41278cba81 Remove one-too-many indent in modules/coins.py 2018-10-11 10:35:41 +01:00
panicbit
c1495e9c1f Fix column obsession 2018-10-11 01:26:16 +02:00
panicbit
7fbd614909 Show new coin total after flipping a coin 2018-10-11 01:18:28 +02:00
jesopo
1e25990ce7 randbelow takes one argument 2018-10-10 18:12:54 +01:00
jesopo
796c3832b6 We're supposed to support passwords with spaces! 2018-10-10 14:27:07 +01:00
jesopo
68f5626189 Change utils.http to use requests 2018-10-10 13:41:58 +01:00
jesopo
0b44788ac5 Support coin bets without a whole number (e.g. '0.1' can be '.1') 2018-10-10 12:10:53 +01:00
jesopo
11d1e5c0e0 Only .strip '\n' from output in modules/eval_lua.py 2018-10-10 12:03:09 +01:00
jesopo
bcd123fc4f Use a better RNG in modules/coins.py (secrets.choice/secrets/randbelow) 2018-10-10 12:02:41 +01:00
jesopo
376825ea96 Mark command hooks that are aliases ('g' vs 'google') 2018-10-10 10:42:41 +01:00
jesopo
8842979205 Add "GTIN" to modules/upc.py error message, to better denote that we support
UPC.
2018-10-09 22:15:40 +01:00
jesopo
88e523c3de Add modules/eval_lua.py 2018-10-09 22:15:27 +01:00
jesopo
fa336d6023 .kill() a process when it times out 2018-10-08 23:35:37 +01:00
jesopo
3016916087 Typo on modules/google.py, 'html' -> 'http' 2018-10-08 23:34:22 +01:00
jesopo
639b21f145 Make git commit "add/mod/del" more concise 2018-10-08 15:09:28 +01:00
jesopo
6b42494b92 .strip("\n") from !rust API call return 2018-10-08 14:00:33 +01:00
jesopo
52405cbd9d Prefix !rust out/err with the requesting user's nickname 2018-10-08 12:55:10 +01:00
jesopo
de2a390d92 !eval -> !python in modules/eval_python.py 2018-10-08 12:51:04 +01:00
jesopo
19ffcacd4d We don't need to use \" inside a """ """ 2018-10-08 12:49:36 +01:00
jesopo
b462ac265e eval.py -> eval_python.py, rust_eval.py -> eval_rust.py 2018-10-08 12:47:48 +01:00
jesopo
0b975b72de Add !rust in modules/rust_eval.py 2018-10-08 12:43:47 +01:00
jesopo
fdccba9bf0 Change modules/signals.py to use bot.trigger(), add a !serverset @utils.export
for quit-quote
2018-10-07 11:28:51 +01:00
jesopo
af39136f83 Pass $HOME and $PATH through to scripts in modules/scripts.py 2018-10-07 11:24:00 +01:00
jesopo
02c3a5c336 Also capture stderr from scripts in modules/scripts.py 2018-10-07 08:22:46 +01:00
jesopo
dc37eb4f2f I always forget about scopes in for loops 2018-10-07 08:10:52 +01:00
jesopo
fab3caa7be do send.stdout event call in bot.trigger func param 2018-10-07 08:03:58 +01:00
Evelyn
9c15431925 Life's but a walking shadow, a poor player that struts and frets his hour upon the stage, and then is heard no more. It is a tale told by an idiot, full of sound and fury, signifying nothing 2018-10-06 22:30:26 +01:00
jesopo
69eda4bf1b Allow user/channel/server/bot settings to be "hidden" from settings lists in
modules/set.py
2018-10-06 17:16:17 +01:00
jesopo
0cf7deed24 Slightly change format of commit messages in modules/github.py 2018-10-06 16:44:39 +01:00
jesopo
930a4bcbc2 Correctly scope 'filename' in modules/script.py._load_scripts 2018-10-06 16:18:59 +01:00
jesopo
79aff93b5d Add a ControlSocket client to IRCBot.py, use it to trigger the epoll loop when a
github webhook has been caught!
2018-10-06 15:45:56 +01:00
jesopo
0a609ca695 Strip/replace \n from git commit messages in modules/github.py 2018-10-06 15:42:57 +01:00
jesopo
1fa66eebc6 Attempt to register servers for read/write when sending github hook notices 2018-10-06 10:02:02 +01:00
jesopo
df94020ef5 Add database.find_by_setting, send github commits to interested channels 2018-10-06 09:54:21 +01:00
jesopo
4296d1ee8e raw.* events should be call_unsafe 2018-10-06 09:30:40 +01:00
jesopo
908edeb1e1 Typo in modules/github.py ('command' -> 'commit') and declare event_response
outside of try/except in modules/rest_api.py
2018-10-06 09:24:43 +01:00
jesopo
c3ace4be2e Return 500 when an exception is thrown, never try to .encode None 2018-10-06 09:23:50 +01:00
jesopo
b0c27eff0b Typo, add missing " 2018-10-05 23:32:20 +01:00
jesopo
d817ec9832 Add the basics of a github webhook in modules/github.py 2018-10-05 23:29:59 +01:00
jesopo
ff00ec1226 Require modules/rest_api.py has tls cert/key 2018-10-05 23:16:34 +01:00
jesopo
b3f8933f3f POST shouldn't use body as 'params' 2018-10-05 23:14:32 +01:00
jesopo
95e7b9ea77 Support POST through modules/rest_api.py 2018-10-05 22:49:06 +01:00
jesopo
bc3c9b742e Add api.server endpoint for individual server information 2018-10-05 09:51:17 +01:00
jesopo
808694c113 Return more info for api.servers and api.channels 2018-10-05 09:46:03 +01:00
jesopo
187220c25e Remove prints 2018-10-05 09:45:49 +01:00
jesopo
e5f475cdeb Allow API endpoints to not request authentication 2018-10-04 17:59:24 +01:00
jesopo
f31fdc48b3 Add api.modules in modules/stats.py 2018-10-04 17:37:47 +01:00
jesopo
52b7beb407 Provide more information for api.channels 2018-10-04 17:37:34 +01:00
jesopo
d7f4050ae8 Strip empty /path/arguments in modulse/rest_api.py 2018-10-04 17:37:03 +01:00
jesopo
f8170d8751 Use URL path for args, not get params 2018-10-04 17:21:40 +01:00
jesopo
b341320e37 Add api.servers endpoint 2018-10-04 17:18:40 +01:00
jesopo
7fc0359e3d Make sure bot.lock is released in do_GET 2018-10-04 17:18:24 +01:00
jesopo
fdddb33f32 Added api.channels handler 2018-10-04 17:10:15 +01:00
jesopo
a220ff8485 Timeout REST API requests after 10 seconds 2018-10-04 17:10:05 +01:00
jesopo
57b72a94c5 Implement !botset/!botget in modules/set.py 2018-10-04 17:09:52 +01:00
jesopo
a533228112 Implement api keys in modules/rest_api.py 2018-10-04 17:09:35 +01:00
jesopo
82b40cc8b2 Add basics of (by-default disabled) REST API 2018-10-04 16:01:13 +01:00
jesopo
1c20eab9d6 send.stdout/send.stderr need a server kwarg 2018-10-04 14:44:33 +01:00
Evelyn
6a0dfdc663 NR: Slightly shorten service output 2018-10-04 14:13:13 +01:00
jesopo
6b122523c0 Improve(?) IPv6 regex 2018-10-04 13:19:59 +01:00
jesopo
26b653555b Look back through scrollback to find ipv4/ipv6 addresses to get rDNS for 2018-10-04 12:15:15 +01:00
jesopo
18b227cbc4 Update modules/channel_op.py to use docstring prefix denotation 2018-10-04 11:05:43 +01:00
jesopo
b778ad2902 Support denoting command response [prefix] in docstring 2018-10-04 11:04:24 +01:00
jesopo
ded6ff03ce Also catch gaierror in !rdns, print e.strerror instead of str(e) 2018-10-04 10:29:22 +01:00
jesopo
078891127d Combile modules/dns.py and modules/geoip.py in to modules/ip_addresses.py, add
!rdns command
2018-10-04 10:18:44 +01:00
jesopo
d89c984d95 'ModuleWarning' -> 'ModuleManager.ModuleWarning' in modules/modules.py 2018-10-04 10:18:17 +01:00
jesopo
75f25db4cd Move 'top 10' logic to utils, add !wordiest to modules/words.py 2018-10-04 05:33:15 +01:00
jesopo
17caaa08dd Actually use the sorted mode list in print_activity 2018-10-04 04:46:32 +01:00
jesopo
75f8f4d955 Fix order of user status symbols in modules/print_activity.py 2018-10-03 17:11:01 +01:00
jesopo
09b6f52d8e Fix showing usage when a user doesn't provide enough args to a command 2018-10-03 17:01:26 +01:00
jesopo
02e76444d1 Add 'remove_empty' kwarg for commands, to strip out empty space 2018-10-03 17:01:10 +01:00
jesopo
04ab018048 Correctly get BitBot's own modes in modules/print_activity.py 2018-10-03 16:47:52 +01:00
jesopo
84ebe5351b Replace ' ' with '+' in modules/define.py's URL-getting 2018-10-03 16:45:19 +01:00
jesopo
ce2231900d Print user status symbols in modules/print_activity.py 2018-10-03 16:44:44 +01:00
jesopo
98207be7b1 'mode_prefixes' -> prefix_modes and prefix_symbols 2018-10-03 16:44:00 +01:00
jesopo
27c191a668 Remove unneeded \n 2018-10-03 16:00:07 +01:00
jesopo
cf397c395d Update old usage/help method 2018-10-03 15:59:49 +01:00
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
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
Evelyn
0f1b87a8c9 NR: Work with Eagle's new and improved format 2017-12-04 17:50:11 +00:00
Evelyn
6bdeccac03 NR: bool.get, what 2017-11-03 19:24:27 +00:00
Evelyn
93862e0347 NR: Don't die if Eagle's not here 2017-11-03 19:20:12 +00:00
Evelyn
9588b7520a NR: change eagle ~branding~ 2017-11-02 22:56:00 +00:00
Evelyn
0894d642bb typo 2017-11-01 14:27:36 +00:00
Evelyn
1f09d69a75 Abandon capability request if an empty ACK (a spec violation but okay) is received 2017-11-01 14:25:52 +00:00
Evelyn
c833d9dbb6 NR: Formatting improvements for external, don't reference non-existent summaries 2017-11-01 12:03:36 +00:00
Evelyn
57dfb56ba7 NR: slightly simplify association summaries 2017-10-31 23:13:16 +00:00
Evelyn
e669b7c2e6 NR: Indicate direction for associations 2017-10-31 11:57:22 +00:00
Evelyn
2055b6656d NR: Full association summaries for SCHEDULE, LDB 2017-10-31 10:58:05 +00:00
Evelyn
6008cbac2c NR: Add date filter 2017-10-29 12:00:08 +00:00
jesopo
0df7abb03e Handle empty CAP, additional IRCLog feature, better tls, better channel_save logic, add sed-sender-only setting
Signed-off-by: jesopo <github@lolnerd.net>
2017-10-27 13:15:33 +01:00
Evelyn
72b2f3bc29 Amber Rudd 2017-10-27 09:40:26 +01:00
Evelyn
aa6529ab0c NR: Use the same association descriptions for LDB and SCHEDULE 2017-10-23 18:41:00 +01:00
Evelyn
b35a64ae48 NR: Don't assume associations present in eagle output 2017-10-23 16:18:10 +01:00
Evelyn
fa8f7da166 NR: Use SCHEDULE associations 2017-10-23 16:13:58 +01:00
Evelyn
b289909bcc NR: Multiline support for head, include ferry services in nrtrains 2017-10-14 23:11:42 +01:00
Evelyn
a8ea18202e Signals: Glenn Moramarco quote 2017-10-10 10:54:38 +01:00
Evelyn
1e644e78f3 Signals: Add Turnball 2017-09-29 21:45:48 +01:00
Evelyn
249a3b40b3 Make the telegram module vaguely optional 2017-09-06 00:17:55 +01:00
Evelyn
84bfe81182 Bitbot can do Telegram now, I guess 2017-09-05 20:50:20 +01:00
Evelyn
5dcbfe588d Increase default period 2017-09-03 06:20:41 +01:00
Evelyn
48fd351089 NR: Shorten times 2017-09-02 12:54:20 +01:00
Evelyn
267edd7c0b NR: Allow displaying CRS only for arrivals/departures 2017-09-02 12:37:08 +01:00
Evelyn
3a7937d0e2 NR: Support Eagle API keys, don't assume platforms are available 2017-09-02 10:11:26 +01:00
Evelyn
f00f1bda94 NR: Eagle now provides a best name via the combined TIPLOC set as 'name', use that 2017-09-01 10:07:21 +01:00
Evelyn
d3d2be44cb NR: Use the actual name field 2017-08-31 19:39:04 +01:00
Evelyn
0822d323bc NR: Take platforms from SCHEDULE if not available in LDB 2017-08-31 19:08:09 +01:00
Evelyn
a78b713268 NR: List delayed trains properly, strip prefix 2017-08-29 22:53:49 +01:00
Evelyn
e69a0c3937 NR: Expand period 2017-08-27 14:46:16 +01:00
Evelyn
f6766ae477 Implement 'time' parameter 2017-08-27 14:41:11 +01:00
Evelyn
bb8d73d9d1 Signals: add quote 2017-08-25 10:57:54 +01:00
Evelyn
78c80a71dd Signals: Don't take Hitler out of context, add 'tear down this wall' etc 2017-08-24 17:00:55 +01:00
Evelyn
9d62e6f301 Add power/inferred tops filtering to nrtrains 2017-08-11 10:03:05 +01:00
Evelyn
69b1a6bd9b 'Death solves all problems - no man, no problem.' was in fact written by Anatoly Rybakov, not Stalin 2017-08-10 00:18:45 +01:00
Evelyn
e232ad5dae Add IRCv3→SASL support for nickserv auth, added optional module whitelist, added server option for recording channel keys, increased flexibility for event raising in linehandler, probably other things too 2017-07-12 10:00:45 +01:00
Evelyn
81edacfba6 Sun Tzu*2, optimism (ha) 2017-06-23 21:13:31 +01:00
Evelyn
a740ccbb61 add quote 2017-06-17 11:29:54 +01:00
Evelyn
36816af1d8 Dag Hammarskjöld quote somewhat relevant to our lives at present 2017-06-16 14:04:04 +01:00
Evelyn
bc94c862c1 NR: Allow null scheduled times, add inferred power/class if available in both modes, titlecase scheduled only location names 2017-06-05 14:25:05 +01:00
Evelyn
9ef5af3894 NR: Prefer LDBSVWS for headcodes 2017-05-30 22:25:12 +01:00
Evelyn
7e19fbe047 NR: I really hate SOAP. Don't break if you don't have a LDBSVWS query 2017-05-30 22:17:30 +01:00
Evelyn
f9e773fc69 NR: Allow use of Eagle for scheduling data (docs/source will follow\!). Slight regression in use of RIDs (but who uses them anyway?) 2017-05-30 22:11:27 +01:00
Evelyn
28425202ce NR: Show shorter TOC code instead of name in service info 2017-04-06 11:25:21 +01:00
Evelyn
70bd021187 NR: Time colouring improvements primarily for service 2017-04-06 10:39:59 +01:00
Evelyn
7c1e2ac2a0 NR: I'm slipping. =→== 2017-04-04 10:20:39 +01:00
Evelyn
cad3482069 NR: Give scheduled times a neutral colour status 2017-04-04 10:19:04 +01:00
Evelyn
b3b6ac823b NR: Put arrived/departed status in map, not local variable (oops) 2017-04-04 10:16:36 +01:00
Evelyn
9dc18311b1 NR: Change service info to use same time system as trains, add departure time option 2017-03-30 16:38:56 +01:00
Evelyn
9f04faaa90 NR: Turns out arrivals/departure doesn't actually respect UTC indication 2017-03-26 14:13:50 +01:00
Evelyn
67d7a20c5c NR: Clocks go back tonight. Make UTC explicit in nrtrains call 2017-03-25 18:21:39 +00:00
Evelyn
710699175b Attribute quote to topiary 2017-03-21 15:05:30 +00:00
Evelyn
cceb0a76d0 NR: dividing 'from' if division at origin, 'as' otherwise 2017-03-21 14:56:07 +00:00
Evelyn
24a8b11191 NR: Add length at origin and division/join, shorten summary for TIPLOC only locations 2017-03-21 14:05:27 +00:00
Evelyn
88f88b76f4 NR: Change time determination for trains command 2017-03-09 17:01:56 +00:00
Evelyn
a69ac85414 NR: Give 'arrivals' command more appropriate name, help now mentions buses 2017-03-09 13:33:24 +00:00
Evelyn
ad8bde0232 NR: Use station_summary for service listing 2017-03-09 12:16:41 +00:00
Evelyn
e175567537 NR: Handle departure SOAP errors, reduce lines for returning with error message 2017-03-09 11:57:35 +00:00
Evelyn
e3c97db55f NR: Cancellation codes inline, reference to 'major' severity nrcc messages, filter now accepts ! for bools 2017-03-08 09:35:23 +00:00
Evelyn
f6cb42e5af NR: Suffix 'hidden' platforms 2017-02-26 12:27:00 +00:00
Evelyn
ddb54cd159 NR: Reference UIDs instead of RIDs in headcode ambiguity message 2017-02-16 10:42:46 +00:00
Evelyn
8682440d4c NR: Minor formatting improvements 2017-02-16 10:32:45 +00:00
Evelyn
2dd9a9077d NR: Reuse SOAP client for performance improvements, add delay/cancellation code command 2017-02-14 11:10:18 +00:00
Evelyn
6615dda7a1 quotes 2017-01-27 21:30:54 +00:00
Evelyn
955ba23b86 Inform the user when they've got filtering wrong 2017-01-16 16:22:09 +00:00
Evelyn
8293ade8ec NR: Add better filtering, add arrivals capablity, add train joining information 2016-12-21 15:50:45 +00:00
Evelyn
cb41b9be37 NR: Remove unused span/countdown code 2016-12-20 14:11:16 +00:00
Evelyn
40b31d9860 NR: Train division information for services, simple '*' filtering for arrivals 2016-12-20 14:03:14 +00:00
Evelyn
9669f6d058 NR: No service information and service disambiguation aren't errors 2016-12-20 12:16:54 +00:00
Evelyn
92fa4c02b0 NR: Allow for multiple destinations for departures 2016-12-20 12:01:16 +00:00
Evelyn
7580516dff Remove unused service list 2016-12-20 08:57:56 +00:00
Evelyn
18397bbe15 NR: Fix 'Cancelled' being shown in green, give departed trains a different colour 2016-12-20 08:54:56 +00:00
Evelyn
c5713e8b54 nr things 2016-12-17 17:34:19 +00:00
Evelyn
ba16f84b15 Convert NR module to use SV for more detail. Abridge some service info, add primitive service filtering, command for headcode/uid/rsid service summaries. If you have a NR API key, you'll need to switch it! 2016-12-16 10:05:54 +00:00
Evelyn
67f0d16c1c Add quote to signals module 2016-12-14 14:43:55 +00:00
Evelyn
d6b50a7a63 Remove 'plat' prefix for space 2016-12-12 10:54:17 +00:00
Evelyn
5f8b61f231 Add tflservice. Arrivals are incomplete, but it's the best we can do with the API 2016-12-06 00:14:14 +00:00
jesopo
a1ddc61af8
Reset font just before "(more)" truncation. 2016-12-05 23:32:31 +00:00
Evelyn
e924d492d0 Remember the filtered output, not the entire service list for !nrservice 2016-12-04 13:50:00 +00:00
Evelyn
60a728f959 More quit quotes! 2016-11-28 10:11:22 +00:00
Evelyn
49af64d553 Dag Hammarskjöld quote 2016-11-17 22:19:26 +00:00
Evelyn
e54473622c Use channel IDs instead of names (lolsecurity) 2016-11-12 11:07:07 +00:00
Evelyn
293f1d5935 Revert NR departures to showing times, not countdown, add colours, allow referring to service from departures 2016-11-04 17:06:07 +00:00
Evelyn
46766507c5 More reformatting, colours! 2016-11-04 16:11:03 +00:00
Evelyn
08894b26b5 Add service command to nr 2016-11-02 01:28:47 +00:00
Evelyn
b92abaf20d Start of tflstop command 2016-11-01 21:19:03 +00:00
Evelyn
25c214f363 Force CRS to upper (Darwin doesn't like lowercase CRS codes) 2016-10-29 15:38:54 +01:00
Evelyn
fc55e853e3 more quotes and stuff 2016-10-25 21:10:56 +01:00
Evelyn
a1a816b1cd Add monty python quit quotes! 2016-10-16 21:21:46 +01:00
Evelyn
5b527e247a Another quit quote! :D 2016-10-13 18:14:55 +01:00
Evelyn
50a01b7bf1 Add Donald Trump, lulzsec to quotes 2016-10-09 09:07:27 +01:00
Evelyn
8d74905481 nrtrains now doesn't break if a platform isn't known 2016-10-09 09:01:06 +01:00
Evelyn
8ad424c906 Add National Rail module w/ arrivals 2016-10-06 14:27:35 +01:00
Evelyn
4b4c5e8103 tfl improvements 2016-10-03 15:10:08 +01:00
Evelyn
f8f011f69e Hacky s/ /%20/ fixes tflsearch problem. @jesopo: Please look at URL encoding in Utils 2016-09-27 02:27:09 +01:00
Evelyn
0a468c19d4 remove comments 2016-09-26 11:05:09 +01:00
Evelyn
842ee38146 Add tflvehicle, simplify tflbus 2016-09-26 11:02:45 +01:00
jesopo
7425afa90f Merge branch 'master' of github.com:jesopo/bitbot 2016-07-14 00:42:49 +01:00
jesopo
c55982b11f
implemented error logging to EventManager (WIP) 2016-07-14 00:42:17 +01:00
Evelyn
068011b7a2 Add proper no result message 2016-07-14 00:41:50 +01:00
Evelyn
57de4f9b44 Change tflsearch no result message 2016-07-14 00:35:11 +01:00
jesopo
5f8d51cbf0
fixed duplicate response 2016-07-14 00:31:44 +01:00
jesopo
369b784a0d
added logs.py and changed EventHook objects to know their name. 2016-07-13 07:31:09 +01:00
jesopo
e604a8de31 Merge branch 'master' of github.com:jesopo/bitbot 2016-07-13 07:06:23 +01:00
jesopo
07457a3626
fixed some crashes in tfl.py. 2016-07-13 07:05:46 +01:00
Evelyn
80bf0bb978 s/tflstop/tflsearch/ 2016-07-10 23:44:37 +01:00
Evelyn
36e12dda1f TfL stop search, 'bus' can now accept proper IDs, fixed issue with time in ms 2016-07-10 13:29:24 +01:00
Evelyn
ddd2a0a463 TfL tube line status 2016-07-10 10:19:29 +01:00
jesopo
145cb90c3d
changed tflbus command to only show next time for each bus, not every single bus it can find. 2016-07-09 14:51:39 +01:00
jesopo
f5f756b39a
added a way to filter what bus you're looking for at a stop in tfl.py. 2016-07-06 13:18:27 +01:00
jesopo
afc8a72f05
changed channel_op.py to not need an argument for (de)op/(de)voice. 2016-07-05 12:17:22 +01:00
jesopo
c02470ddbf
changed tfl.py to show bus stop name. 2016-07-05 12:16:40 +01:00
jesopo
6da747981f
did some tweaks to tfl.py. 2016-06-28 00:18:09 +01:00
jesopo
f21618eeb1 Merge branch 'master' of github.com:jesopo/bitbot 2016-06-28 00:09:51 +01:00
jesopo
cbec3657f4
added tfl.py. 2016-06-28 00:09:33 +01:00
Evelyn
51fa7fee3e We're all fucked. I'm fucked. You're fucked. [...] It's been the biggest cock-up ever and we're all completely fucked 2016-06-27 23:11:46 +01:00
Evelyn
871e7fc80d Add Walter Ulbricht quote 2016-06-25 22:12:06 +01:00
jesopo
6a3b9b28b4
tweaked karma.py. 2016-06-24 13:10:36 +01:00
jesopo
d3a1c2db52
added a part command to admin.py. 2016-06-24 09:17:27 +01:00
jesopo
e5dfd04045
you know what, this module has too many flaws. 2016-05-17 16:20:18 +01:00
jesopo
1c6632e0e7
fixed a problem in nickname_aliases.py that made the bot assume root aliases were just new names that needed aliasing. 2016-05-17 16:16:49 +01:00
jesopo
d042f0dc4a
added admin.py, for admin-type things. 2016-05-17 16:14:23 +01:00
jesopo
f06033483f
added a way to set the bot's nickserv password through a command. 2016-05-17 14:52:07 +01:00
jesopo
8dadd7d339
added deop, voice and devoice to channel_op.py. 2016-05-17 14:51:47 +01:00
jesopo
2fb299e9b7
on second thought, should probably only show people their nickname's permissions when they're identified. 2016-05-17 14:51:15 +01:00
jesopo
5286157326
added a command to show you what permissions you have. 2016-05-17 14:50:48 +01:00
jesopo
e31d606d16
added stats.py. 2016-05-09 16:14:12 +01:00
Evelyn
eb603fccb9 Another quote 2016-05-09 13:35:52 +01:00
jesopo
18a5d2087e Merge branch 'master' of github.com:jesopo/bitbot 2016-05-06 13:37:30 +01:00
jesopo
5338859e31
added a function to Utils to get the "closest" setting, with channel/user settings being more important than server-wide settings. 2016-05-06 13:36:01 +01:00
Evelyn
2df29ab76e more quotes 2016-05-04 14:31:45 +01:00
jesopo
9c9d7aa439
added wikipedia.py. 2016-05-04 13:30:31 +01:00
jesopo
9b6d8d2dc0
added bitcoin.py. 2016-05-03 11:58:42 +01:00
jesopo
bdf21643a3
made set/channelset settings consistent. 2016-05-01 22:47:59 +01:00
jesopo
3a7481315d
added a command to quotes.py to get a random quote from a category. 2016-05-01 17:47:35 +01:00
jesopo
c1f8835653
added quotes.py. 2016-04-29 12:43:48 +01:00
jesopo
52deab53aa
added an error to the kickban command in channel_op.py for when a user is not present in a channel to be kickbanned. 2016-04-24 03:01:44 +01:00
jesopo
00dd425210
added an op command to channel_op.py. 2016-04-22 11:48:28 +01:00
jesopo
5e9574e195
added a timeout error and fixed the regex on karma.py. 2016-04-21 00:09:30 +01:00
jesopo
c5c53bc481
added hash.py. why not. 2016-04-20 13:52:23 +01:00
jesopo
bc12c77891
did what I said I would sooner than I thought I would. centralised persisting timers through bot restarts. 2016-04-19 13:25:50 +01:00
jesopo
9eff1b8931
entirely reworked the timer system to work with the event system, will eventually persist all timers to database until complete in a central way. 2016-04-19 12:21:27 +01:00
jesopo
ce4f0f68b0
fixed words.py to always show nicknames with the same count in the same order. 2016-04-18 16:51:06 +01:00
jesopo
1127682872
added a way for a command callback to neatly ask to only be available for people with a rank or above, added a channel_op module to utilise this. 2016-04-18 16:50:19 +01:00
jesopo
100fad4599
added some code to the nickname_aliases module, I do not trust this module yet. :| 2016-04-18 16:49:21 +01:00
jesopo
2d729b68c3
started passing some more helpful info when preprocessing a command. 2016-04-18 16:48:36 +01:00
jesopo
9c5f0d6035
added command-prefix to channel settings. 2016-04-14 16:48:44 +01:00
jesopo
390eff4c2b
added experimental module to track what nicknames are actually aliases for other nicknames. 2016-04-13 14:55:38 +01:00
Evelyn
190d42fbb5 simpler boolean channel settings 2016-04-10 17:40:58 +01:00
jesopo
954a1b4dfc
added a confirmation of message save to in.py. 2016-04-10 17:32:51 +01:00
jesopo
ab05ea6509
beefed up the words.py module. 2016-04-10 17:32:33 +01:00
jesopo
1750c2b1ec
changed commands.py to show usage help (if available) when minimum arguments are not met. 2016-04-10 17:31:55 +01:00
jesopo
eac1d127bd
added the code to prevent users using certain commands based on permissions. 2016-04-06 18:23:02 +01:00
jesopo
99299c9df5
made some finishing touches to todo.py. 2016-04-06 16:38:46 +01:00
jesopo
3ba307300f
added more code to deal with lastfm having a ridiculously unreliably structured API. 2016-04-06 16:22:52 +01:00
jesopo
7f7a1f6d55
added spotify.py and soundcloud.py, updated bot.json.example. 2016-04-06 13:56:12 +01:00
jesopo
9b2556a65a
added usage help to a lot of modules, added a verbose option to karma.py. 2016-04-06 12:02:44 +01:00
jesopo
afec1deb5c
added tracking certain words in words.py and fixed/changed a couple of things to allow it to work. 2016-04-06 09:40:49 +01:00
jesopo
27c0de701c
added words.py for keeping track of how many words people have said. 2016-04-05 18:43:17 +01:00
jesopo
e1188e153a
fixed a crash-causing bug in lastfm when userplaycount isn't present. 2016-04-05 18:42:36 +01:00
jesopo
efa8c91552
used set.py as an example for the new usage command. 2016-04-05 18:41:33 +01:00
jesopo
e8875ef17d
added a usage command to show usage help for commands. 2016-04-05 18:41:03 +01:00
jesopo
f19389ec8c
added todo.py. 2016-04-05 14:26:46 +01:00
jesopo
f9ce711b25
oops 2016-04-04 23:20:55 +01:00
jesopo
3c0a8562a9
ironed out some little issues with permissions.py. 2016-04-04 18:48:39 +01:00
jesopo
62a73df22f
added permissions.py which contains code for identifying/registering/logouting users. updated README.md to reflect the newly required scrypt module. 2016-04-04 18:42:37 +01:00
jesopo
436db4b9a8
added a way for command event hooks to ask to only be fired from private messages. 2016-04-04 18:41:07 +01:00
jesopo
d5e4c7bbe7
added code to youtube.py to prevent a crash when a video has likes/dislikes disabled. 2016-04-04 18:40:39 +01:00
jesopo
1cc28a5581
fixed showing track tags in lastfm.py. 2016-04-04 12:37:17 +01:00
jesopo
a348bf4241
fixed some dumb typos 2016-04-03 17:08:48 +01:00
jesopo
e10ba5f293
added some more to the skeleton of the auto_mode module. 2016-04-03 13:23:47 +01:00
jesopo
504e93a78d
tinkered with some modules and fixed a few bugs, also added the skeleton for the auto_mode.py module. 2016-04-03 13:20:05 +01:00
jesopo
8843d9a469
removed yet more left over code from when commands were channel-only. 2016-03-31 13:37:08 +01:00
jesopo
4bca2cb95d
fixed the frankly ridiculously wrong youtube url regex in youtube.py. 2016-03-31 13:36:26 +01:00
jesopo
6dff99490c
added CTCP SOURCE and TIME responses. 2016-03-31 12:10:51 +01:00
jesopo
1c00b20d51
made the @ for the twitter command optional. 2016-03-31 12:10:18 +01:00
jesopo
87af05d4b6
added a "hashflag" to modules to stop modules being loaded that rely on a not-present config option. 2016-03-30 19:31:23 +01:00
jesopo
e7dc2d566c
fixed a left over reference to event["channel"] that is now broken in to.py. 2016-03-30 12:50:07 +01:00
jesopo
dc24b6b680
made channel commands prefixable with the bot's nickname, not just the command prefix. 2016-03-30 12:49:46 +01:00
jesopo
426068f0cf
fixed a couple of problems in some modules. 2016-03-29 21:06:07 +01:00
jesopo
57a0e2f10f
made commands work in channel AND in private message. 2016-03-29 16:22:22 +01:00
jesopo
16d1af9057
added bitly.py and haveibeenpwned.py. 2016-03-29 16:20:50 +01:00
jesopo
7de9970cd0
added help strings where they were missing. 2016-03-29 14:37:35 +01:00
jesopo
bf0e271546
added random.py, added code to commands.py to remove all empty strings from args_split. 2016-03-29 14:32:01 +01:00
jesopo
cd0311d269
updated ctcp.py. 2016-03-29 13:00:01 +01:00
jesopo
f943d63098
first commit. 2016-03-29 12:56:58 +01:00