Commit graph

1530 commits

Author SHA1 Message Date
jesopo
dfbc727dc7 Don't prefix "self." events with "received." 2018-11-27 15:43:32 +00:00
jesopo
71775803d0 Reload bot config (on USR1) on the main thread 2018-11-27 15:10:49 +00:00
jesopo
dba4c9561c 'line' -> 'output' (github.py) 2018-11-27 15:07:22 +00:00
jesopo
d13a5069e3 Grab response from functions asked to be executed on the main thread and feed
them back to the callers, allowing rest_api.py to take the main thread while
it's waiting for the response to give back to the requesting client
2018-11-27 14:25:12 +00:00
jesopo
00d4b9c73f Show list of users in a channel, not just count 2018-11-27 13:34:51 +00:00
jesopo
7df55305ca Make channel stats in /api/servers a dictionary 2018-11-27 13:24:38 +00:00
jesopo
ab60012cbe Add channel stats to /api/servers 2018-11-27 13:23:20 +00:00
jesopo
8bbdcc6d4e Send WHO on self mode change, to catch any important changes to our user
information that mode changes can cause (e.g. hostname change)
2018-11-27 13:16:43 +00:00
jesopo
08b4d94695 Fix missing spaces in some event calls in line_handler.py 2018-11-27 13:16:19 +00:00
jesopo
d010ca5c79 Use WHO/WHOX to also keep track of our own username/hostname 2018-11-27 12:14:03 +00:00
jesopo
72dca06626 Add a way to catch when a writebuffer is emptied so we can e.g. assure a QUIT is
sent before shutting down the bot
2018-11-27 11:56:03 +00:00
jesopo
231fa51129 use '~' instead of '±' to represent "changed files" in modules/github.py 2018-11-26 14:47:47 +00:00
jesopo
bac4ba89b7 Use send.stdout in modules/in.py 2018-11-21 20:05:08 +00:00
jesopo
b8518d745f Move all logic related to score reasons until after we've checked if we have
reasons (mixed_unicode.py)
2018-11-20 20:43:26 +00:00
jesopo
993403f213 .items -> .items() 2018-11-20 20:41:51 +00:00
jesopo
957b5413dc Use collections.Counter instea of itertools.groupby to group together all
instances, not just consecutive instaces (mixed_unicode.py)
2018-11-20 20:30:48 +00:00
jesopo
45c7ce6da5 Add !disconnect to admin.py 2018-11-20 14:27:24 +00:00
jesopo
80dd3bb5e1 Don't count Unknown towards additional scripts count (mixed_unicode.py) 2018-11-20 14:17:46 +00:00
jesopo
0915dbd3fa 'AdditonalScript' -> 'AdditionalScript', 'score_reasons' -> 'reasons' 2018-11-20 13:50:07 +00:00
jesopo
537e2eebc4 Show reasons for score points (mixed_unicode.py) 2018-11-20 13:47:38 +00:00
jesopo
b98bf65a86 Add a point to a message's score for each additional script they use
(mixed_unicode.py)
2018-11-20 13:24:28 +00:00
jesopo
e31d9750ed (for the moment) remove percentage-ising scores (mixed_unicode.py) 2018-11-20 13:23:11 +00:00
jesopo
5ea34b261f TRACE log score with 2 decimal places (mixed_unicode.py) 2018-11-20 13:14:35 +00:00
jesopo
3dccc9f4e0 Keep a track of different scripts in a message, round score to 2 decimal places
(mixed_unicode.py)
2018-11-20 13:13:11 +00:00
jesopo
c59a5600a8 Score mixed unicode as a percentage (mixed_unicode.py) 2018-11-20 13:08:47 +00:00
jesopo
727ade4022 Only TRACE log when score is more than 0 (mixed_unicode.py) 2018-11-20 12:42:45 +00:00
jesopo
f507da3b9a 'BLUE' -> 'LIGHTBLUE' branch name for push and create events (github.py) 2018-11-20 12:40:26 +00:00
Evelyn
563bc59208 Mixed unicode: Add Cherokee and Tai Le blocks 2018-11-20 12:29:03 +00:00
Evelyn
22939dd0a9 Mixed unicode: Ranges expressed in hex, with comments 2018-11-20 12:18:56 +00:00
Evelyn
e70ec91a7a Add Coptic range to mixed unicode module 2018-11-20 12:07:54 +00:00
jesopo
52d5b5da49 Detect full-width characters (mixed_unicode.py) 2018-11-20 12:00:47 +00:00
jesopo
e54db0858c Detect Armenian script (mixed_unicode.py) 2018-11-20 11:44:13 +00:00
jesopo
b19ce0be2f Add first version of modules/mixed_unicode.py, designed to detect when we get a
message that mixes scripts (latin, cyrillic, greek, etc) that might be spam
2018-11-20 11:38:30 +00:00
jesopo
c2ef675bf0 Better descript opened pull requests (github.py) 2018-11-20 10:27:28 +00:00
jesopo
c77ca64367 Change merged branch name from blue to light blue (github.py) 2018-11-20 10:16:39 +00:00
jesopo
371d9bd9d6 Only color branch name when it's not in the url 2018-11-19 21:36:24 +00:00
jesopo
ded49fe92a But blue-ification on branch/tag name, not on "branch"/"tag" 2018-11-19 21:34:36 +00:00
jesopo
e5ae963193 Blue-ify tag/branch for create event 2018-11-19 21:31:29 +00:00
jesopo
da2c403dd7 Don't bold action_desc for pull_request event action (github.py) 2018-11-19 21:08:57 +00:00
jesopo
58a0cf97cf Move "(" on to start line for a string format 2018-11-19 20:56:42 +00:00
jesopo
5767a1b32e Show branch when a pull request is merged 2018-11-19 20:54:40 +00:00
jesopo
5d813175a1 Don't enable write throttling until we get 005 2018-11-19 10:12:52 +00:00
jesopo
9cdc37ce72 'factoid' -> 'value' 2018-11-18 11:18:37 +00:00
jesopo
c227f9a34f Catch factoids in channel messages as '{!factoid <name>}' (factoids.py) 2018-11-18 10:31:44 +00:00
jesopo
fd805a07db Make branch names blue AND bold! (github.py) 2018-11-18 10:27:19 +00:00
jesopo
7b430a71b0 Don't 404 when a repo is hooked in to but a specific event type isn't listened
for (github.py)
2018-11-18 10:25:32 +00:00
jesopo
6fbbcace66 Make branch names in commit notifications blueified 2018-11-18 10:20:16 +00:00
jesopo
ec373cf667 Add help/usage to factoids.py 2018-11-18 07:59:47 +00:00
jesopo
130da6f769 Add missing '%s' in string format (factoids.py) 2018-11-18 07:57:51 +00:00
jesopo
b811872577 'ModululeManager' -> 'ModuleManager' (factoids.py) 2018-11-18 07:56:55 +00:00
jesopo
5bb96c0d0c Added modules/factoid.py 2018-11-18 07:55:43 +00:00
jesopo
870c56cfbb hooks -> targets, to actually respect filtered-out channels 2018-11-17 22:39:14 +00:00
jesopo
a7e2eacf1d typo in modules/github.py, 'targets.append(server, channel)' ->
'targets.append([server, channel])'
2018-11-17 22:35:32 +00:00
jesopo
369af13e4b ... this one too. 2018-11-17 22:34:51 +00:00
jesopo
dd47db25f9 I forgot that I'd changed how servers keep their list of channels 2018-11-17 22:33:31 +00:00
jesopo
dc1a292a75 Allow filtering by github event type 2018-11-17 22:32:44 +00:00
jesopo
099613d2bc 'tag' -> 'tag_name' (github.py) 2018-11-17 22:17:14 +00:00
jesopo
dfa11b0f18 Nope, "..." is an official git feature and it looks way nicer on github 2018-11-17 22:07:32 +00:00
jesopo
d35636733a '..' not '...' 2018-11-17 22:01:58 +00:00
jesopo
39bbde57a0 '...', not unicode ellipsis 2018-11-17 22:01:09 +00:00
jesopo
3b952ba66e Remove newlines for formatted strings where applicable (github.py) 2018-11-17 21:44:52 +00:00
jesopo
4ad35006c0 Show branch in commit notices in (github.py) 2018-11-17 21:44:33 +00:00
jesopo
e1cff13dbe Put repo full name on each output automatically in modules/github.py 2018-11-17 21:41:39 +00:00
jesopo
f34bad8562 Support Github webhook release events 2018-11-17 21:21:32 +00:00
jesopo
b17c8d79bf Remove additional '%s' in modules/github.py.delete that was left over from
copypaste of `create`
2018-11-17 21:12:12 +00:00
jesopo
fa2de60edf Also support delete event 2018-11-17 21:10:03 +00:00
jesopo
32301ae334 'CREATE_EVENT' -> 'CREATE_URL' 2018-11-17 21:07:34 +00:00
jesopo
aeb7ee76ea 'name' -> 'login' 2018-11-17 21:06:27 +00:00
jesopo
c5293ef5bf 'pusher' -> 'sender' 2018-11-17 21:05:08 +00:00
jesopo
0da685bb0a Actually, tag/branch creation comes under the create event 2018-11-17 20:59:24 +00:00
jesopo
e6542f3fb2 Correctly show new tags being created in modules/github.py 2018-11-17 20:48:19 +00:00
jesopo
9f086d56a4 Only show first line of commit message 2018-11-17 20:33:23 +00:00
jesopo
0f2a8c7932 Minor code styling change in modules/8ball.py 2018-11-17 12:48:42 +00:00
jesopo
7ef8437d44 range()'s upper bound is not inclusive 2018-11-17 12:29:24 +00:00
jesopo
0da18aa86d now i see why it was %s not %d 2018-11-17 12:26:21 +00:00
jesopo
9054ee7cd2 How hard is it to refactor a dice module 2018-11-17 12:25:14 +00:00
jesopo
349c9a0190 ints are not strings 2018-11-17 12:23:49 +00:00
jesopo
692c79c745 'reults' -> 'results' 2018-11-17 12:23:06 +00:00
jesopo
d130b0e59b 'die_sides' 'die_count' -> 'sides_n' 'count_n' 2018-11-17 12:22:05 +00:00
jesopo
0f8a3231c6 Should be using sides and count, not roll[0] and roll[1] 2018-11-17 12:21:09 +00:00
jesopo
97b2158956 .partition returns 3 values! 2018-11-17 12:19:32 +00:00
jesopo
73ecb42ca9 Simplify modules/dice.py 2018-11-17 12:18:26 +00:00
jesopo
43e39c42c7 'bol' -> 'bold' typo 2018-11-17 09:40:44 +00:00
jesopo
2072c9f3e8 Boldify pusher for combined commits 2018-11-17 09:39:27 +00:00
jesopo
b15ef9f739 use "before" commit hash for comparing a range of commits 2018-11-17 08:28:48 +00:00
jesopo
5a742f05a3 Typo in modules/github.py, 'moddified' -> 'modified' 2018-11-17 08:24:31 +00:00
jesopo
331a4e0a7a 'command' -> 'commit' 2018-11-17 08:22:39 +00:00
jesopo
f6b68815c9 utils.irc.bold needs to be given an empty string 2018-11-17 08:21:40 +00:00
jesopo
b27bffaa50 Typo in modules/github.py, 'const' -> 'consts' 2018-11-17 08:20:34 +00:00
jesopo
ea881724ee Forgot to import itertools 2018-11-17 08:19:45 +00:00
jesopo
e0a6ba39c6 show added/removed/modified counts as unique files when we're aggregating
commits
2018-11-17 08:15:28 +00:00
jesopo
ffb2382b8f Add missing ")" 2018-11-16 20:40:49 +00:00
jesopo
c0c6178c30 Show more than 3 commits in 1 message speficially designed for doing so 2018-11-16 20:39:37 +00:00
jesopo
10c457f524 Don't send more than 3 commits in one go 2018-11-16 20:23:34 +00:00
jesopo
39c313bd64 we need strings! 2018-11-16 17:43:05 +00:00
jesopo
b008bb2a0f results was already a ", ".joined string 2018-11-16 17:42:00 +00:00
jesopo
8e5415b887 second format arg should have been results 2018-11-16 17:40:49 +00:00
jesopo
b176701e0a Fix string formatting of modules/dice.py 2018-11-16 17:39:33 +00:00
jesopo
cec97749e5 Make IP regex neater in modules/ip_addresses.py 2018-11-15 15:41:55 +00:00
jesopo
64a58fe041 Translate 'synchronize' to 'committed to' in modules/github.py's pull request
handling
2018-11-15 07:06:43 +00:00
jesopo
06078ba959 Prefix modules/rest_api.py logging with "[HTTP] " 2018-11-14 23:02:32 +00:00
jesopo
1275352576 Log HTTP events through regular logging 2018-11-14 23:01:22 +00:00
jesopo
e262af4acf 'self.message.*' now uses 'send.message.*' 2018-11-14 22:54:27 +00:00
jesopo
ba68f33999 This elif should have actually been one even indented! 2018-11-14 22:18:54 +00:00
jesopo
21b757dbb0 IRCBuffer.add_notice doesn't have an action param 2018-11-14 22:16:39 +00:00
jesopo
ac87104151 Remove a ") i should have removed before 2018-11-14 22:14:12 +00:00
jesopo
c7f32a4066 only do server-notice checking if we have a "prefix" in event, even if it's None 2018-11-14 22:12:46 +00:00
jesopo
957b881dbd if is_channel should be if channel, buffer.add_notice doesn't take an
`action` param and `elif` can't go after `else`!
2018-11-14 22:07:01 +00:00
jesopo
378f4b1f93 Better parsing of CTCP messages, support raw.send.privmsg/raw.send.notice in
modules/line_handler.py
2018-11-14 21:28:27 +00:00
jesopo
05eea3b585 Strip font from the last message in a channel before trying to translate it 2018-11-14 14:44:01 +00:00
jesopo
ed838193aa Better support passing "send" events through the parsers already present in
modules/line_handler.py
2018-11-14 14:41:28 +00:00
jesopo
aafe0624b2 Do a bold+unbold *after* the colored parts of github's "added/removed/modified"
to avoid the weechat bolding bug but not bold the colors
2018-11-14 08:51:49 +00:00
jesopo
775177a7ff Add 375 data to server.motd_lines 2018-11-14 08:22:21 +00:00
jesopo
0b1881b1a9 purple doesn't need the bold() trick as weechat doesn't bold it to make it the
color it is, thus a forceful unbolding isn't required!
2018-11-13 17:59:45 +00:00
jesopo
765ae0fcf9 Add code to tokenize and ansi-replace IRC colors; use this in
modules/print_activity.py
2018-11-13 17:23:28 +00:00
jesopo
8b9062b942 Better constifying of color/font chars 2018-11-13 16:02:26 +00:00
jesopo
555e8faa03 Print MOTD in modules/print_activity.py (after caching it in
modules/line_handler.py)
2018-11-13 14:59:47 +00:00
jesopo
fad4715b5c Add "prefixed-commands" to !channelset 2018-11-12 23:00:51 +00:00
jesopo
0c8678d44f Add a way to tell bitbot to only response to highlight-based commands (e.g. "bitbot: ping") but ignore prefixed commands (e.g. "!ping") 2018-11-12 22:59:21 +00:00
jesopo
49a21b2d36 Add a way to prevent responses to commands at all in specific channels 2018-11-12 22:55:40 +00:00
jesopo
439994464f The target channel of an /INVITE is the second argument! 2018-11-12 22:37:01 +00:00
jesopo
911ace524d Typo in modules/rest_api.py, 'args_spit' -> 'args_split' 2018-11-12 22:20:46 +00:00
jesopo
161272daf5 Better denote variable-length "endpoint" arg in !apikey's usage 2018-11-12 20:44:46 +00:00
jesopo
6308ec86b7 Remove accidentally-added additional argument in modules/set.py.bot_set 2018-11-12 20:33:56 +00:00
jesopo
6e4e358ed1 Typo in modules/rest_api.py, 'seting' -> 'setting' 2018-11-12 18:18:07 +00:00
jesopo
78b3ca3cdc Typo on modules/rest_api.py, '= =' -> '=' 2018-11-12 18:16:55 +00:00
jesopo
eb215d61a1 'api-minify' -> 'rest-api-minify' and make it settable from !botset 2018-11-12 18:15:08 +00:00
jesopo
a0e86f79c3 Change API key checking on-request to match what the values should be in the
database (dict of '{"name": , "permissions": }')
2018-11-12 18:06:02 +00:00
jesopo
a943e69cee Change API keys to be hex representations of UUID4s, change their value in the
database to be a dictionary ({"comment": , "permissions": }) and change the
!apikey command to take a `comment` arg (to note what specific keys are intended
for) and vararg `permissions` (a list of endpoints the API key is allowed to
hit)
2018-11-12 17:59:40 +00:00
jesopo
251f65c048 Boldify authors in modules/github.py 2018-11-12 17:16:17 +00:00
jesopo
d4bb690e83 Remove no-longer-used Regexes in modules/line_handler.py 2018-11-12 12:48:41 +00:00
jesopo
fa9c870e22 Boldify "merged"/"closed without merging" in modules/github.py 2018-11-12 10:24:22 +00:00
jesopo
0fc9b396f1 'files: %s/%s/%s' -> '%s/%s/%s files' 2018-11-12 08:48:21 +00:00
jesopo
3909d679de Fix copypaste fail in modules/github.py 2018-11-12 08:48:09 +00:00
jesopo
7275408b35 Delimit added/removed/modified with "/" and boldify them 2018-11-12 08:44:15 +00:00
jesopo
4716ad16b9 Change "modified" color from yellow to purple, remove unneeded space 2018-11-12 08:38:18 +00:00
jesopo
102d7491ef Change added/removed/modified order, change modified symbol and added colors to
added/removed/modified
2018-11-12 08:35:16 +00:00
jesopo
6bb03c4519 Don't implicitly create channels, explicitly create channels when we join one 2018-11-11 13:03:54 +00:00
jesopo
c50622c1a4 Typo in modules/line_handler.py, 'getl' -> 'get' 2018-11-11 12:50:12 +00:00
jesopo
2816fe67bb Move channel tracking data/functions to src/IRCChannel.Channels 2018-11-11 12:34:22 +00:00
jesopo
57aa62cc9c API keys should have a value of [] when they're created, not True 2018-11-11 09:03:19 +00:00
jesopo
b8e6bfd5e5 Add a way of appending a comment on an API key, to denote what it's for. 2018-11-11 09:02:48 +00:00
jesopo
b06eff217f typo in modules/rest_api.py; 'resonse' -> 'response' 2018-11-11 08:55:49 +00:00
jesopo
9c7afe7d2b Add missing "," in modules/rest_api.py 2018-11-11 08:54:46 +00:00
jesopo
36ab270971 typo in modules/rest_api.py, 'permimssions' -> 'permissions' 2018-11-11 08:53:37 +00:00
jesopo
8024bc9c80 Add a way to minify REST API responses in modules/rest_api.py 2018-11-11 08:51:50 +00:00
jesopo
d72e01aa68 update modules/stats.py to use connection_params 2018-11-11 08:47:21 +00:00
jesopo
8d350aa5f5 Show bytes read/written in server stats 2018-11-11 08:44:46 +00:00
jesopo
9826209ddf Add missing "}"s in modules/check_mode.py 2018-11-10 22:35:35 +00:00
jesopo
dbe0d6cdab Treat "low"/"high" as synonymous with "v"/"o" but with a settable override in
modules/check_mode.py
2018-11-10 22:32:44 +00:00
jesopo
07c813cc1f Add basic access controls to modules/rest_api.py 2018-11-10 21:54:08 +00:00
jesopo
22660067d5 Remove unneeded string literal for resume CAP 2018-11-09 11:15:07 +00:00
jesopo
bc5f9351b1 Make .get() default explicit 2018-11-09 10:47:27 +00:00
jesopo
4bab1aea30 Add a way to more explicitly denote when a CAP handshake has ended early 2018-11-09 10:43:05 +00:00
jesopo
7390367a5a Add missing ")" in modules/stats.py 2018-11-08 22:30:06 +00:00
jesopo
57f697a378 Add !caps to show negotiated IRCv3 capabilities 2018-11-08 22:28:32 +00:00
jesopo
093fc5b2a8 Make hiding [Github] prefix dependent on channel setting 2018-11-08 17:48:23 +00:00
jesopo
2b106adc05 Add missing ".get(" in modules/resume.py 2018-11-08 17:29:20 +00:00
jesopo
150ad512ad Add missing "," in modules/resume.py 2018-11-08 17:28:21 +00:00
jesopo
b3625dbe13 Support IRCv3's draft/resume-0.2 2018-11-08 17:09:53 +00:00
jesopo
2e43c9f3cf Add a way to halt CAP before it hits CAP END 2018-11-08 17:08:46 +00:00
jesopo
88cb327d02 Only send 'PROTOCTL NAMESX' when we're not already got IRCv3's multi-prefix CAP
active
2018-11-08 14:30:50 +00:00
jesopo
26a16a7762 Keep a dict of isupport key:values on IRCServer.Server 2018-11-08 12:34:30 +00:00
jesopo
9744be6473 INFO instead of TRACE log for STS policy setting and connection upgrade 2018-11-08 12:21:54 +00:00
jesopo
4d272a3fa4 Refactor handling ISUPPORT and support hex escapes therein 2018-11-08 11:13:19 +00:00
jesopo
f15e3c8ffe We don't need to expliticly print issue/pr numbers; they're shown in the urls 2018-11-07 19:27:22 +00:00
jesopo
7489b3dd96 "%s commented on" -> "%s commented on a review" 2018-11-07 19:22:12 +00:00
jesopo
66a904b5aa don't show pull request review events when they're "commented" 2018-11-07 19:21:59 +00:00
jesopo
d961416401 Color "merged" and "closed without merging" in green and red respectively 2018-11-07 11:47:54 +00:00
jesopo
773412cdb0 Hide [Github] prefix in modules/github.py 2018-11-07 11:27:34 +00:00
jesopo
1696492a78 Add ability to hide [Prefix] from command outputs 2018-11-07 11:27:10 +00:00
jesopo
4000479cf0 Better show when a PR is merged or not merged when closingd 2018-11-07 08:23:07 +00:00
jesopo
6234334a7c I decided to not specifically handle printing arrays in !get/!channelget/etc but
forgot to remove this code
2018-11-06 17:35:59 +00:00
jesopo
1dfa10ea9d Typo in modules/github.py, 'COMMENT_ACTION' -> 'COMMENT_ACTIONS' 2018-11-06 17:23:27 +00:00
jesopo
08355c026e Log errors caught when trying to execute API endpoints 2018-11-06 17:22:50 +00:00
jesopo
2bdac13752 Make "created a comment on" more readable with "commented on" 2018-11-06 17:05:40 +00:00
jesopo
367657901d Better indicate that comments/reviews are for the given title, instead of it
seeming like the title is the comment body
2018-11-06 16:10:26 +00:00
jesopo
0e2d2b268a Handle github_event 'ping' 2018-11-06 16:08:02 +00:00
jesopo
7c49152ef6 if an issue comment is from a pull request, it's denoted by the presence of
data["issue"]["pull_request"]
2018-11-06 15:01:02 +00:00
jesopo
12bc12e2ab issue_comment is fired for both issue comments AND pull request comments.
weirdly.
2018-11-06 14:55:47 +00:00
jesopo
f06c824ae9 Only count a None response from an API event hook to be a 404 2018-11-06 14:09:13 +00:00
jesopo
276fe2c8fa Allow a json.loads error in modules/github.py to bubble back up to
modules/rest_api.py
2018-11-06 14:08:35 +00:00
jesopo
be3ee373dd Typo in modules/github.py, 'for output in output' -> 'for output in outputs' 2018-11-06 14:02:03 +00:00
jesopo
c3c6080117 Don't parse github events when there are no channels listening for the given
repo
2018-11-06 14:01:49 +00:00
jesopo
b6ad57f965 github-hook is an array 2018-11-06 14:01:30 +00:00
jesopo
65b182c9a9 'event["headers"]' -> 'event["headers"]["X-GitHub-Event"]' 2018-11-06 14:01:02 +00:00
jesopo
8789689393 Remove additional 'False' in modules/set.py that was an artefact of the first
attempt to support array setting
2018-11-06 13:48:32 +00:00
jesopo
7d71da47a0 Typo in modules/set.py; '=' -> '==' 2018-11-06 13:44:33 +00:00
jesopo
c3295c4140 Support more than just push actions in modules/github.py 2018-11-06 13:43:06 +00:00
jesopo
bbec7f311d Pass headers through REST API callbacks 2018-11-06 13:02:04 +00:00
jesopo
2921ed77ae Support arrays of user/channel/bot/server settings 2018-11-06 13:01:30 +00:00
jesopo
8930d04567 server should be passed in received.rename in modules/line_handler.py 2018-11-05 21:38:39 +00:00
jesopo
257659aa73 Change modules/sts.py to reference connection_params, fix some typos and logig
issues
2018-11-05 20:51:33 +00:00
jesopo
ea3ed99a9e Explicitly disconnect before reconnecting in modules/sts.py 2018-11-05 20:35:23 +00:00
jesopo
f0f2701386 Do an instant reconnect for !reconnect in modules/admin.py 2018-11-05 20:03:45 +00:00
jesopo
d63115440d Fix the order of some connection params, add alias as a seperate argument to
IRCServer.Server
2018-11-05 18:30:39 +00:00
jesopo
6b8593a09b Pass connection parameters around in their own object (IRCConnectionParameters) 2018-11-05 18:23:02 +00:00
jesopo
e26df7556a Check that a server's STS policy has a duration before doing
rescheduling-on-disconnect
2018-11-05 18:21:43 +00:00
jesopo
7c3a8e7444 Prettyprint channel RENAMEs 2018-11-05 16:42:33 +00:00
jesopo
4936b91273 Support JSON messages tags, as per IRCv'3 message-tags-0.3 #318 pull request 2018-11-05 15:15:08 +00:00
jesopo
90a72eb24d TRACE log when we set an STS policy 2018-11-05 14:57:34 +00:00
jesopo
edbacce1fc Support draft/sts as well as sts 2018-11-05 14:52:25 +00:00
jesopo
5b2c979649 "Applying STS policy" should be TRACE, not DEBUG 2018-11-05 14:16:14 +00:00
jesopo
7408bfc9d3 Add missing ")" in modules/sts.py 2018-11-05 14:13:27 +00:00
jesopo
9b6e3c96ed Add missing "," in modules/sts.py 2018-11-05 14:12:59 +00:00
jesopo
aaf0c8cf2a Reschedule STS expiration on disconnect 2018-11-05 14:12:21 +00:00
jesopo
3fa16fe678 Explicitly *remove* STS policy when we get a duration of 0 2018-11-05 13:26:11 +00:00
jesopo
5fa442c8a5 info does not exist in on_cap_new context in modules/sts.py 2018-11-05 13:25:51 +00:00
jesopo
061a4ede23 One-shot STS policies should still be cleared if a reconnect fails 2018-11-05 13:14:00 +00:00
jesopo
5981bfa04c Made STS policies one-shot when upgrading from plaintext to tls 2018-11-05 13:03:45 +00:00
jesopo
19864a7e13 duration does not exist in the context of _change_duration 2018-11-05 12:59:40 +00:00
jesopo
c3a2ffc48d Add support for IRCv3's STS 2018-11-05 12:39:02 +00:00
jesopo
7baab0f7d7 Update modules/scripts.py to use utils.parse.hashflags instead of
utils.get_hashflags
2018-11-05 12:15:54 +00:00
jesopo
9c233cd4dd Add src.utils.parse.keyvalue, mostly for IRCv3 CAP negotiation 2018-11-05 11:56:28 +00:00
jesopo
5963580cb8 Fix a crash in modules/line_handler.py; QUIT can have an empty reason! 2018-11-05 10:03:31 +00:00
jesopo
58363895f1 Change line parsing to put arbitrary-length args on the end of
`args` so we can get rid of `last`/`arbitrary` and add IRCArgs (with .get())
to help only getting an arg index if it exists
2018-11-04 15:37:06 +00:00
jesopo
6d742f6a74 Implement IRCv3's draft/rename 2018-11-04 14:48:55 +00:00
jesopo
9b2040e280 Show wallet balances in a human format (with ","s) 2018-11-02 13:09:09 +00:00
jesopo
44f3e241d2 Don't let users bet 0 coins 2018-11-02 13:07:46 +00:00
jesopo
2acf9bdd31 Show !coins in a human format (with ","s) 2018-11-02 12:47:00 +00:00
jesopo
24e4e2c5ad Add a way to silently stop commands executing in modules/commands.py
(preprocess.command)
2018-11-02 11:13:43 +00:00
jesopo
4fcb80b834 serverset identity-mechanism should be in modules/permissions.py 2018-11-02 11:08:03 +00:00
jesopo
18d055bb9e Check if a url is a gallery first, 'event' -> 'data' typo, actually return from
_prefix
2018-10-31 17:54:44 +00:00
jesopo
04e369a92d Use gallery API endpoint for gallery urls 2018-10-31 17:44:21 +00:00
jesopo
ff1d4da362 Support galleries in modules/imgur.py 2018-10-31 17:41:12 +00:00
jesopo
60151dc1a0 Comma-delimit numbers in the !richest response 2018-10-31 16:46:40 +00:00
jesopo
8212fc51eb imgur url hashids aren't always 7 characters 2018-10-31 16:29:24 +00:00
jesopo
bf6a740f7b Fix typo in modules/imgur.py that caused headers passed to utils.http.get_url
to be a set, not a dict. (',' -> ':')
2018-10-31 16:17:22 +00:00
jesopo
0066cb313e REGEX_IMAGE should be a compiled regex! 2018-10-31 16:16:31 +00:00
jesopo
f073613848 Add first version of modules/imgur.py 2018-10-31 16:12:28 +00:00
jesopo
b58a3f7329 Update modules/line_handler.py to now not pass a server param to
utils.irc.parse_line
2018-10-30 17:55:05 +00:00
jesopo
e07553c362 Add type/return hints throughout src/ and, in doing so, fix some cyclical
references.
2018-10-30 14:58:48 +00:00
jesopo
705daaf9bb Don't needlessly search a youtube URL before getting the information for it's
video ID when a URL is provided to !yt
2018-10-29 23:13:32 +00:00
jesopo
73077b9bbf 'continue' -> 'return' in moules/badwords.py 2018-10-28 14:02:43 +00:00
jesopo
82f8a23503 badwords shouldn't effect users with +v or above 2018-10-28 14:01:54 +00:00
jesopo
85f86f9d8a Pretend badwords list is zero-indexed 2018-10-28 12:44:48 +00:00
jesopo
73a33633e2 Fix wording for !badwordsdel (copypaste fail!) 2018-10-28 12:41:01 +00:00
jesopo
996df4dc5e Correctly use enumerate() in modules/badwords.py.badwords_list 2018-10-28 12:40:39 +00:00
jesopo
53f027bea1 'pattern' -> 'badword' 2018-10-28 12:37:32 +00:00
jesopo
0ff934d5b9 'received.message.channel' uses 'channel' not 'target' as event kwarg 2018-10-28 12:36:28 +00:00
jesopo
7472079f60 'badowrds' -> 'badwords' 2018-10-28 12:35:35 +00:00
jesopo
27bfe2e23d Yet another typo in modules/badwords.py, 'get_getting' -> 'get_setting' 2018-10-28 12:34:18 +00:00
jesopo
09779ca570 'channel' -> 'target' in modules/badwords.py 2018-10-28 12:33:26 +00:00
jesopo
60421382d4 Fix typo in modules/badwords.py, 'events' -> 'event' 2018-10-28 12:32:24 +00:00
jesopo
c28c85cdd6 Add missing ":" in modules/badwords.py 2018-10-28 12:31:42 +00:00
jesopo
d3563eea69 Add missing ")" in modules/badwords.py 2018-10-28 12:30:53 +00:00
jesopo
c577f9d1ad Add first version of modules/badwords.py 2018-10-28 12:29:35 +00:00
jesopo
b34f4d70a5 Remove extra ) in modules/commands.py 2018-10-28 11:54:55 +00:00
jesopo
5553ac9e49 Typo in modules/command.py, 'is' -> 'if' 2018-10-28 11:53:31 +00:00
jesopo
ec72787f86 Support multiple "usage" values in commands.py 2018-10-28 11:50:56 +00:00
jesopo
c5e1fafeb1 Put a dash between commit message and commit url 2018-10-26 11:28:01 +01:00
jesopo
e9ed153aa3 Put commit urls on github webhook notices in modules/github.py 2018-10-26 11:25:28 +01:00
jesopo
fd9778bd25 Redo lottery timer in modules/coins.py 2018-10-24 16:03:28 +01:00
jesopo
a1e77c40e8 Give page an initial value of None, in case the get_url call fails in
modules/eval_python.py
2018-10-24 13:54:22 +01:00
jesopo
f89b96f373 Move taking a reference to sys.stdout above fail() in modules/eval_python.py 2018-10-24 13:54:03 +01:00
jesopo
46179d2f38 There's no self in eval_python's template! 2018-10-24 13:50:50 +01:00
jesopo
7f9399a925 Specifically catch SyntaxError in modules/eval_python.py 2018-10-24 13:43:34 +01:00
jesopo
99f896ebdd Catch syntax errors with .py/.py2 2018-10-24 13:40:56 +01:00
jesopo
ae0825650e .items() -> .values() 2018-10-23 13:39:40 +01:00
jesopo
1794da1f66 Typo in modules/coins.py, 'amount_amount_total' -> 'bet_amount_total' 2018-10-23 13:38:04 +01:00
jesopo
e9fcd0c5e2 Re-move taking payin to before payout, better logic around win/odds to show it
correctly but still give back your bet amount
2018-10-23 13:36:33 +01:00
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