Commit graph

1353 commits

Author SHA1 Message Date
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