Commit graph

2938 commits

Author SHA1 Message Date
jesopo
d00d026461 allow short names for config contexts. people mistook "user" as "put your
nickname here" so having just "u" might prevent this
2019-06-19 10:28:53 +01:00
jesopo
43108b96ba show nickname in NO_DUCK non-kick message 2019-06-19 10:22:46 +01:00
jesopo
6d034c3b42 Move !help to it's own module and entirely rework its interface 2019-06-18 17:34:16 +01:00
jesopo
77ea95f0a9 Remove "!" from help strings 2019-06-18 17:33:42 +01:00
jesopo
00d7da9967 location_name will not be defined when querying a location instead of a user 2019-06-18 16:53:57 +01:00
jesopo
b3b8c6534b Remove debug prints 2019-06-18 16:51:00 +01:00
jesopo
398bd7e117 use "city, state, country" for formatted location name when available 2019-06-18 16:50:46 +01:00
jesopo
14303f354c 'location' wasn't the variable i thought it was 2019-06-18 16:40:42 +01:00
jesopo
d43cef6543 Save location name from geocoding, use it for !w when available
closes #71
2019-06-18 16:36:22 +01:00
jesopo
2ed1cf2e4a Only try to show !w country when it is available. closes #72 2019-06-18 16:35:51 +01:00
jesopo
3c51348fec Implement +bitbot.dev/mulitline-concat to concat line to previous line 2019-06-18 15:18:56 +01:00
jesopo
621830c360 Simplify SentLine by shifting truncation to ParsedLine (and commands.outs) 2019-06-18 14:14:37 +01:00
jesopo
88e796e334 check-mode and channel-access should reference the computed target, not
"current channel"
2019-06-18 08:01:20 +01:00
jesopo
312b0af645 Change vote, instead of rejecting, when people vote twice 2019-06-17 22:31:27 +01:00
jesopo
37fd78ff27 Change vote ids to be 6 chars, instead of 8 2019-06-17 21:39:43 +01:00
jesopo
4bcc02f32d WARN log for soft SASL failure 2019-06-17 18:22:12 +01:00
jesopo
ee9a67730a _end_sasl takes a server param 2019-06-17 18:11:02 +01:00
jesopo
7df8082e72 Update help/usage strings for vote.py 2019-06-17 18:08:02 +01:00
jesopo
966515bd24 Make sure new random ids are unique 2019-06-17 17:54:41 +01:00
jesopo
96d2a1fae6 Support multiple concurrent votes 2019-06-17 17:51:42 +01:00
jesopo
738a353c52 support recalling results of old votes 2019-06-17 16:36:48 +01:00
jesopo
933668f0a3 Allow admin users to start/end votes 2019-06-17 16:30:23 +01:00
jesopo
31503f3f75 first draft of vote.py 2019-06-17 16:29:14 +01:00
jesopo
47acd4adc3 Add a setting to disable "hard" sasl failure 2019-06-17 14:22:08 +01:00
jesopo
72ce880478 Only panic() when a server connection is part of bot init. closes #69 2019-06-17 14:20:11 +01:00
jesopo
0c02368023 panic() if a sasl dance fails on first connection, disconnect on reconnect sasl
fail
2019-06-17 14:07:44 +01:00
jesopo
76a2c66b3e Show what the given context was when it's unknown 2019-06-17 11:29:36 +01:00
jesopo
99a314ed01 Catch _to_context ValueError and show pretty error 2019-06-17 11:27:48 +01:00
jesopo
ced59a0f74 Allow channel-access and channel-mode check for channels people are not in 2019-06-16 20:48:31 +01:00
jesopo
73aa55b866 Support 'channel-access' check request referencing current channel 2019-06-16 20:45:14 +01:00
jesopo
98e1202c78 Allow command.regex hooks to opt-in to being triggered from a /me
closes #68
2019-06-16 18:40:25 +01:00
jesopo
75f60caaf8 'multi-line' -> 'multiline' 2019-06-16 17:20:31 +01:00
jesopo
4b61f837fb 'timeout' -> 'cooldown'. closes #60 2019-06-16 17:05:40 +01:00
jesopo
002e1333a4 Add auto-github-timeout to prevent duplicate auto-githubs 2019-06-16 16:57:22 +01:00
jesopo
5fa3d66a39 Return all caps through received.cap.ls|new and check if valid in line_handler,
remove server.cap_started
2019-06-16 15:33:20 +01:00
jesopo
3a18229a73 Parse inbound bitbot.dev/multi-line batches 2019-06-16 10:03:46 +01:00
jesopo
ef10207a73 Send target as batch argument 2019-06-16 10:03:28 +01:00
jesopo
33de403685 Implement bitbot.dev/multi-line 2019-06-16 09:53:12 +01:00
jesopo
5b58cc05b6 Check that we have enough PRIVMSG args for strip_color.py 2019-06-16 09:52:04 +01:00
jesopo
c9de95f44a forgot to pass stdout and stderr to command callbacks! 2019-06-16 09:51:45 +01:00
jesopo
8ab4880c5c Change from yield checks to a func in events that pass up EventErrors 2019-06-15 18:42:14 +01:00
jesopo
cb2cab627f Remove debug yield check 2019-06-15 18:41:04 +01:00
jesopo
fd35acb01b Request draft/event-playback when available 2019-06-15 00:49:14 +01:00
jesopo
1d8173f607 copypaste fail, setting_info -> export_settings[setting] 2019-06-14 17:39:11 +01:00
jesopo
e814494777 Show example (when available) for "invalid value" error 2019-06-14 17:35:12 +01:00
jesopo
229a45a491 Change prviate channel_access commands to use a "channel-access" yield check 2019-06-14 17:23:22 +01:00
jesopo
f8b086b095 "saved a duck" -> "befriended a duck" 2019-06-14 17:11:44 +01:00
jesopo
9b5f946cec 80 col wrap 2019-06-14 17:11:36 +01:00
jesopo
359e977d18 Don't let users change settings for other channels when they have +o in the
current channel
2019-06-14 16:34:48 +01:00
jesopo
50e9f56ca3 Show when a server connected instead of "bytes read/written per second" in stats
endpoint
2019-06-14 16:12:03 +01:00
jesopo
3fad17d1b9 catch StopIteration.value, pass back EventError that comes from a generator 2019-06-14 12:48:26 +01:00
jesopo
74a4d7077d Remove !set/!channelset/!serverset/!botset and related commands 2019-06-14 12:29:24 +01:00
jesopo
e713086255 Advise use of !config, not !set/!channelset/!serverset/!botset 2019-06-14 12:27:45 +01:00
jesopo
7a5af8f558 yield already generated permission check for serverset/botset 2019-06-14 12:25:53 +01:00
jesopo
f614d1fc14 add self check.command, change !config to use new yields 2019-06-14 12:09:42 +01:00
jesopo
f05fc209b0 Add a way to __or__ utils.Checks, as a "if one of these passes" thing 2019-06-14 12:01:55 +01:00
jesopo
d7fa2cfa24 Catch yields in command callbacks for e.g. permission checks 2019-06-14 11:42:12 +01:00
jesopo
11643f6eea Expose IRCChannel.mode_str() on REST API stats endpoint 2019-06-13 11:54:13 +01:00
jesopo
795f6afbeb Mode mode (and mode arg) parsing to IRCChannel.py, add IRCChannel.mode_str 2019-06-13 11:53:47 +01:00
jesopo
675c510223 typo, 'acount' -> 'count' 2019-06-12 22:57:04 +01:00
jesopo
f336cecb06 "duck" when duck count is 1, "ducks" otherwise 2019-06-12 22:36:26 +01:00
jesopo
7324a05d3e WARN log (instead of exception) when we receive an unknown label 2019-06-12 15:36:59 +01:00
jesopo
db7c62f76a Drastically simplify karma regex: only "strip" off last 2 chars of --/++ 2019-06-11 13:17:50 +01:00
jesopo
4dc957afe6 Make root wikipedia command !wikipedia, !wi and !wiki as aliases 2019-06-10 23:06:47 +01:00
jesopo
03917649ee Add help/usage strings for ducks.py 2019-06-10 16:41:32 +01:00
jesopo
87a01dac95 INFO log when we drop a message in message_filter.py 2019-06-10 15:02:20 +01:00
jesopo
1625534951 Strip font formatting chars before doing message filtering 2019-06-10 14:49:01 +01:00
jesopo
1e03a40f8f Change message_filter.py _name to "Filter" 2019-06-10 14:43:14 +01:00
jesopo
807e239a2b Ignore sts tokens on plain-text connections if no port key is provided 2019-06-10 14:01:58 +01:00
jesopo
53907b57d7 command-out truncation logic should be referencing sent_line 2019-06-10 11:21:59 +01:00
jesopo
49524119a5 Add message_filter.py 2019-06-10 10:46:12 +01:00
jesopo
6c5dc958d0 Add .assure() to ParsedLine, to make it immune from .valid() 2019-06-10 10:45:02 +01:00
jesopo
6c64a2296c draft/resume-0.4 -> draft/resume-0.5 2019-06-09 16:18:25 +01:00
jesopo
b782657b69 manage tweet thread ourselves to make sure it's a daemon 2019-06-09 15:15:50 +01:00
jesopo
62289ff41b Remove debug print 2019-06-09 14:25:24 +01:00
jesopo
dad60ed307 only add to IRCBuffer when there's actually a message (e.g. exclude TAGMSG) 2019-06-08 18:48:42 +01:00
jesopo
abccb06dc5 Add missing time import 2019-06-08 12:13:51 +01:00
jesopo
d98e814d3f Show how many seconds it took to !bef/!trap a duck 2019-06-08 12:10:27 +01:00
jesopo
d4ba98307f We should look at ISUPPORT's STATUSMSG token instead of PREFIX 2019-06-08 10:59:52 +01:00
jesopo
16b9361371 Only request a CAP once. closes #66 2019-06-08 10:17:13 +01:00
jesopo
d9321b87ec self._get_sts no longer exists 2019-06-08 07:57:44 +01:00
jesopo
3a2404d1c9 Fixes for tweet streaming found from finally testing it 2019-06-07 22:01:13 +01:00
jesopo
321bd7acf4 check stdout/stderr has_text() before .send() gets rid of it 2019-06-07 16:21:19 +01:00
jesopo
b1d07859c3 actually return ret 2019-06-07 16:21:11 +01:00
jesopo
8e6835be3c Only show typing indicators for commands that expect output 2019-06-07 15:57:15 +01:00
jesopo
5f47d86708 Send +draft/typing tag when processing commands 2019-06-07 15:30:53 +01:00
jesopo
f822345976 Merge branch 'master' into feature/write-thread 2019-06-07 15:07:31 +01:00
jesopo
2199069629 Better formating for pull_request ready_for_review event 2019-06-07 11:29:11 +01:00
jesopo
9c6b9c3964 List()ify self.bot.servers.values() as it can change mid-QUIT 2019-06-06 22:39:57 +01:00
jesopo
d281f5ef17 Remove +draft/typing TAGMSG - that was for testing 2019-06-06 21:16:39 +01:00
jesopo
f96378ac07 move immediate-write-trigger to IRCServer.py, trigger _event_loop for
running=False
2019-06-06 17:58:35 +01:00
jesopo
6f27879d1b Send +draft/typing before processing command. WIP 2019-06-06 17:31:11 +01:00
jesopo
2ca4fd48f7 Make params arg for logging functions optional 2019-06-06 12:59:47 +01:00
jesopo
5299f816af assign local var "modes" 2019-06-06 11:22:45 +01:00
jesopo
4c6a398f53 Ask for our own modes when we get a 001 2019-06-06 11:16:47 +01:00
jesopo
4055e7c21f put formatting reset after !seen info (so colors can't leak) 2019-06-05 20:52:25 +01:00
Anton McClure
5eeffc30ef
Replaced command ,bang with ,trap 2019-06-05 10:37:58 -04:00
jesopo
7e3375cfbd Change duck-triggering to be through regex commands that catch ALL messages;
this will make is-silenced and ignores work automatically
2019-06-05 14:18:41 +01:00
jesopo
74c3d3a009 Don't count JOINs towards duck-triggering messages 2019-06-05 14:16:37 +01:00
jesopo
3590a64a51 Store information about last-seen-action and recall when !seen is used 2019-06-05 13:18:44 +01:00
jesopo
5e8f9ccbcf Remove users from channels/server AFTER we call received.quit 2019-06-05 13:18:29 +01:00
jesopo
c6696c8b00 Pass along minimalistic formatted lines, as well as prettier ones 2019-06-05 13:18:13 +01:00
jesopo
8a536c3ac5 WARN when we see 10 labeled-responses while waiting for a response to a line 2019-06-05 12:11:14 +01:00
jesopo
0d64f55215 Strip html from !define/!randomword output 2019-06-05 12:05:51 +01:00
jesopo
6b7705a0ea Fix commit_comment format string and show url 2019-06-05 11:40:23 +01:00
jesopo
2d46fe0cbf labels: Use BatchType to match, pass lines not line, batch ID isn't a label,
fire event on label response
2019-06-04 17:54:19 +01:00
jesopo
2470c1ec03 Add new BatchType object, to match like how Capability and MessageTag do 2019-06-04 17:51:55 +01:00
jesopo
8dbae6a5e9 Give SentLine (and preproc.send events) a new event object, to track events
related to a line after it is sent
2019-06-04 17:51:20 +01:00
jesopo
825dce5292 .on_send( only exists on SentLines, not ParsedLines 2019-06-04 14:41:55 +01:00
jesopo
09015dd302 Change signals.py to subvert write throttling when sending QUIT 2019-06-04 14:38:08 +01:00
jesopo
d3cb7dc5cd 'hunder2' -> 'hunter2'. meme typos D: 2019-06-04 09:30:33 +01:00
jesopo
5071bb1ed7 Actually capture IP addresses in groups 2019-06-03 16:49:25 +01:00
jesopo
15bb7ebb51 Resolve lastfm nowplaying args to a user's set lastfm args is available 2019-06-03 16:00:53 +01:00
jesopo
e6d2208cc4 Differentiate between send and received ctcp events 2019-06-03 14:22:19 +01:00
jesopo
95f59779f7 Also track msgids from CTCP in ircv3_msgid.py 2019-06-03 14:10:25 +01:00
jesopo
6b2af83681 pass is_channel through CTCP events, fire generic "got a ctcp" event 2019-06-03 13:51:30 +01:00
jesopo
ef221f4165 v1.8.0 release 2019-06-03 13:30:39 +01:00
jesopo
248772f3e3 Bump resume back down to draft/resume-0.4 (from draft/resume-0.5) for now 2019-06-03 12:55:09 +01:00
jesopo
f0f05a4748 Update --depends-on hashflags for ircv3 module renames 2019-06-03 12:45:18 +01:00
jesopo
9a8b345c53 Prefix names for all IRCv3 modules with "ircv3_" 2019-06-03 12:44:04 +01:00
jesopo
a18157700c Check from_self, not if target==is_own_nickname, use from_self when adding to
buffer obj
2019-06-03 11:37:23 +01:00
jesopo
ae3e2708c0 buffer lines in private messages should be stored against the sender 2019-06-03 11:35:31 +01:00
jesopo
8b796c159f Only parse CTCP when we're not in a TAGMSG event 2019-06-03 11:10:01 +01:00
jesopo
d610282c9e Consolidate PRIVMSG, NOTICE and TAGMSG handlers in to 1 function 2019-06-03 11:03:12 +01:00
jesopo
5f8c93ea92 use last-seen msgid to prevent duplicate messages in chathistory BATCH 2019-06-02 15:19:05 +01:00
jesopo
c44424b5a1 Track last-seen msgid per-channel (add msgid.py) 2019-06-02 15:18:49 +01:00
jesopo
c212d70b68 Hold on to BATCH args, allow event hooks to manipulate batches 2019-06-02 15:18:36 +01:00
jesopo
f9f637e084 Remove IRCSendBatch, fix some batch-related type hints 2019-06-02 10:13:51 +01:00
jesopo
dc284bab4a Only enable write throttling when _write_buffer is empty
closes #59
2019-05-31 15:49:34 +01:00
jesopo
4698ea6f78 'draft/resume-0.4' -> 'draft/resume-0.5' 2019-05-31 10:28:00 +01:00
jesopo
f7f476e40b Remove empty _random_string declaration 2019-05-30 17:27:48 +01:00
jesopo
0e6bcb5af0 Hex-encode master passwords, instead of b64, to avoid "strange" chars 2019-05-30 17:25:24 +01:00
jesopo
17ee70cdd6 'alias' -> 'str(server)' as alias does not exist in the current context 2019-05-30 16:17:39 +01:00
jesopo
367eb1c60e Make labeled-resposnes it's own module, tag and track every sent line 2019-05-30 15:36:10 +01:00
jesopo
58aea4b3b4 draft/labeled-response -> draft/labeled-response-0.2 2019-05-30 07:44:53 +01:00
jesopo
d225f08b9d labeled-response is not ratified yet 2019-05-29 17:54:43 +01:00
jesopo
b8f778d7bd Only try to send QUITs on ctrl+c when we're connected - sys.exit otherwise 2019-05-29 16:11:47 +01:00
jesopo
768059fcf4 Switch resume.py to use the last server-time it saw, not last .recv() 2019-05-29 15:53:20 +01:00
jesopo
240faa03fb Move IRCv3 server-time code in to it's own module, save last @time tag 2019-05-29 15:52:21 +01:00
jesopo
2f6dda9030 First draft of following/unfollowing tweets in channels 2019-05-29 12:19:53 +01:00
jesopo
4543f0a439 Switch from bot-url metadata to bot+homepage (https://git.io/fjlSn) 2019-05-28 10:28:48 +01:00
jesopo
113a3b6405 re.escape nicknames for highlight prevention 2019-05-28 08:18:42 +01:00
jesopo
e483d4574b 'bot' -> 'self.bot' 2019-05-27 17:04:21 +01:00
jesopo
86d46c9917 re-add _reload function 2019-05-27 16:55:02 +01:00
jesopo
7b6905454f Don't include module-unload numbers in "success" numbers 2019-05-27 16:54:44 +01:00
jesopo
850ddd0ab4 Use self.bot.load_modules in modules.py 2019-05-27 15:47:47 +01:00
jesopo
5b90a1a1d4 ModuleManager's load_module function now takes a ModuleDefinition 2019-05-27 14:57:16 +01:00
jesopo
76b268e60e Switch to using tweepy for tweets module 2019-05-27 14:52:08 +01:00
jesopo
786f04ea16 set changed = True when we pop a module with no dependencies left 2019-05-27 14:50:15 +01:00
jesopo
984274a9e1 fix cve.py helpstring 2019-05-25 21:44:50 +01:00
jesopo
268c5adb3c Add depends-on hashflags to relevant modules 2019-05-25 21:40:06 +01:00
jesopo
30b7c2419d Actually save blacklist setting when reenabling a module 2019-05-25 12:36:07 +01:00
jesopo
1fb4936fad Don't eat a character when preventing highlights 2019-05-24 21:33:01 +01:00
jesopo
4d4271435d Use regex to prevent highlights in github module 2019-05-24 21:28:43 +01:00
jesopo
6b41834a35 connect_time is on server.socket, not server 2019-05-24 17:36:20 +01:00
jesopo
a3a2c1e5a4 Store IRCSocket connect_time, show bytes read/write per second in stats.py 2019-05-24 17:32:59 +01:00
jesopo
3e8a31ba73 _match_caps takes 2 args 2019-05-24 05:47:01 +01:00
jesopo
61af81c9de Add comment about why we strip non-alnum chars from private commands 2019-05-23 16:10:31 +01:00
jesopo
4b5f839231 Forgot not so it was stripping alnum chars, not non-almun chars 2019-05-23 16:05:41 +01:00
jesopo
f0230eb001 attempted_auth is no longer used 2019-05-23 16:04:09 +01:00
jesopo
0a23e71e4e .lstrip alphanumeric chars from private commands 2019-05-23 16:03:49 +01:00
jesopo
e2a878def1 Remove self param of _validate 2019-05-23 15:36:04 +01:00
jesopo
f4b702fe04 Remove debug printing from config.py 2019-05-23 14:18:15 +01:00
jesopo
3806fd864b Add require_setting to pronouns.py 2019-05-23 12:18:12 +01:00
jesopo
724b3380d3 Use require_setting in user_time.py and weather.py 2019-05-23 11:50:12 +01:00
jesopo
d8b625eaa9 Add setting example in location.py 2019-05-23 11:49:57 +01:00
jesopo
34b7768d42 Use require_setting in birthday.py 2019-05-23 11:46:00 +01:00
jesopo
ac9768fcde Add system to require settings per event hook and show example help if they're
not present
2019-05-23 11:45:35 +01:00
jesopo
9df7b80d00 pass the command_prefix that triggered an event through event kwargs 2019-05-23 11:44:52 +01:00
jesopo
9f2881323f Only show register/identify advice when we're using internal auth 2019-05-23 10:39:24 +01:00
jesopo
fef97bfcd8 Show example usage when a user does not provide a setting value 2019-05-23 10:36:59 +01:00
jesopo
13a878cc17 Remove array-setting log - we don't/shouldn't use it. 2019-05-23 10:34:10 +01:00
jesopo
cf29c37112 Add usage examples for all settings 2019-05-23 10:28:14 +01:00
jesopo
8cc0b84e53 event.eat() for command.regex hooks in github module 2019-05-22 22:31:03 +01:00
jesopo
86c36d2ecc LIGHTBLUE tick for verified twitters, not GREEN 2019-05-22 20:29:53 +01:00
jesopo
ce37c66e8a Show a green tick for verified twitter accounts 2019-05-22 20:27:13 +01:00
jesopo
000b264d6d move api def to the only context that uses it, rename twitter_object var 2019-05-22 19:49:55 +01:00
jesopo
aa75f4ef05 Implement auto-tweet setting to get tweet info automatically 2019-05-22 19:42:52 +01:00
jesopo
801eb5adb4 Refactor tweet-formatting logic in to it's own functions 2019-05-22 19:42:36 +01:00
jesopo
02ddb85167 Typo, taret -> target 2019-05-22 19:34:30 +01:00
jesopo
f066dbb232 url_match -> event["match"] 2019-05-22 19:03:51 +01:00
jesopo
5ab4c6cbff target_str is BitBot's own nickname for private messages 2019-05-22 14:26:22 +01:00
jesopo
e3d8063373 Check if a PRIVMSG/NOTICE is send *from* us before we check if it's sent *to* us
- so `user` isn't null when bitbot messages himself.
2019-05-22 14:23:38 +01:00
jesopo
e82a05dd37 RESUME errors now come as FAIL RESUME 2019-05-22 11:57:26 +01:00
jesopo
4ce8d6b461 Pass server through FAIL events, use FAIL command as part of event path 2019-05-22 11:56:21 +01:00
jesopo
cf89e28019 Log calls need formatting arguments as a second arg 2019-05-22 11:56:05 +01:00
jesopo
6ba3588294 stdout.write on success for !disconnect 2019-05-22 08:50:05 +01:00
jesopo
3e1a478f77 Remove old debug print()s from admin.py 2019-05-22 08:49:00 +01:00
jesopo
29d5ab9b56 _handle takes a server param 2019-05-22 08:42:41 +01:00
jesopo
82e79ac4e5 there's no 1 index arg for a batch-end 2019-05-22 08:42:27 +01:00
jesopo
6a4852d2b4 server and tag var don't exist 2019-05-22 08:42:03 +01:00
jesopo
f52fd2adc4 We should be using CAP.available() as it's not a string 2019-05-22 08:34:52 +01:00
jesopo
0dbf44a681 Default taget_str in send.stdout/send.stderr to target.name 2019-05-22 08:24:59 +01:00
jesopo
fe67edecac change arg order for StdOut(/StdErr( in send.stdout/send.stderr events 2019-05-21 23:16:54 +01:00
jesopo
d003b8eb57 change position of target_str in self.command args 2019-05-21 23:14:56 +01:00
jesopo
6d44db6065 Remove references to STATUSMSG - just pass around a raw target_str (target
without statusmsg chars stripped off)
2019-05-21 23:09:32 +01:00
jesopo
d5a973b84b Don't allow karma for empty strings 2019-05-21 16:48:10 +01:00
jesopo
451d0c5928 typo, 'preix' -> 'prefix' 2019-05-21 15:39:54 +01:00
jesopo
73c3068a8d event["channel"] -> event["target"] 2019-05-21 13:53:36 +01:00
jesopo
7ddc539ea6 don't overwrite tags var 2019-05-21 13:02:40 +01:00
jesopo
11e5cc50c4 Keep commands/outs.py tags-agnostic 2019-05-21 12:56:05 +01:00
jesopo
a031402c1d Add masterpassword private-only command 2019-05-21 12:18:59 +01:00
jesopo
5dd337a92e Move master-password generation out to it's own function 2019-05-21 12:17:01 +01:00
jesopo
5ba3c5d460 Typo, 'usernaame' -> 'username' 2019-05-21 10:45:15 +01:00
jesopo
9124f84e25 Strip "+" from the start of port after checking if it is present 2019-05-21 10:42:40 +01:00
jesopo
1daa4217ec Add !addserver command 2019-05-21 10:16:20 +01:00
jesopo
9a5ba753d0 event.eat() in command.regex for !title 2019-05-21 09:54:51 +01:00
jesopo
2fcaf68f0e Move regex-based github info to command.regex hooks 2019-05-21 09:54:18 +01:00
jesopo
281e14d1fb Add the basics of usig BRB instead of QUIT for draft/resume-0.4 2019-05-20 16:36:17 +01:00
jesopo
bdd161256d has_capability -> has_capability_str, add new has_capability 2019-05-20 16:33:32 +01:00
jesopo
161fdb8aa6 "you cannot change your own karma" should be stderr not stdout 2019-05-20 14:14:44 +01:00
jesopo
02998efc43 Actually pass args_split in to _find_command_hook 2019-05-20 06:42:17 +01:00
jesopo
c9b9827c14 take/return args_split from _find_command_hook, for alias replacing 2019-05-20 06:39:58 +01:00
jesopo
2ff21f5f78 Typo, 'colr' -> 'color' 2019-05-19 21:41:56 +01:00
jesopo
c6f82d3866 green/red the whole of likes/dislikes, not just up/down symbols 2019-05-19 21:39:35 +01:00
jesopo
5ed9185fb5 Remove now-unneeded call to .buffer.skip_next() after a preprocess.command
failure
2019-05-19 17:53:21 +01:00
jesopo
9d89d7198e target doesn't exist in message handlers 2019-05-19 17:36:31 +01:00
jesopo
db3525778e Only buffer.skip() for non-regex commands 2019-05-19 17:34:14 +01:00
jesopo
bf6e4a0e40 green/red color for up/down votes on youtube videos 2019-05-19 17:33:02 +01:00
jesopo
4806e9c81e Switch to using Capability.copy() for sasl 2019-05-19 11:13:37 +01:00
jesopo
c60094ea92 matched_caps is actually a str[] 2019-05-19 11:13:16 +01:00
jesopo
66ce2ee2b7 .copy() all the hardcoded Capabilities in line_handler/ircv3.py 2019-05-19 11:10:32 +01:00
jesopo
f386351b7b Use Capability.copy() in metadata.py 2019-05-19 11:08:32 +01:00
jesopo
046bb2b8ae Make use of Capability.copy() in resume.py 2019-05-19 11:01:44 +01:00
jesopo
e4bc57b3cc Actually check auto-title setting 2019-05-19 10:44:48 +01:00
jesopo
66c3d26531 Don't give draft/resume-0.4 as the non-draft arg to utils.irc.Capability 2019-05-19 10:34:50 +01:00
jesopo
5255820b87 draft/resume-0.3 -> draft/resume-0.4 2019-05-19 10:34:33 +01:00
jesopo
8be178f406 Use re.search, not re.match, for command.regex hooks 2019-05-19 08:41:20 +01:00
jesopo
7ccfa12b00 event["channel"] -> event["target"] (from regex-commands change) 2019-05-18 21:33:50 +01:00
jesopo
3b9efe769a Change factoids.py to use regex commands 2019-05-18 20:18:55 +01:00
jesopo
6f0b31cb9a Switch imgur.py to use command.regex system 2019-05-18 19:20:09 +01:00
jesopo
4e0e63e7f8 Hand over regex-based-command responsibilities to commands module 2019-05-18 18:35:47 +01:00
jesopo
161c60c4f6 .lower() -> .upper() for CAP subcommands. makes a lot more sense. 2019-05-18 14:57:09 +01:00
jesopo
e7edd9997f regex fix, move '+' inside capturing group 2019-05-18 11:13:19 +01:00
jesopo
0a89682816 match.group(0) -> ref 2019-05-18 11:07:42 +01:00
jesopo
c474702afb Catch github urls in auto-github 2019-05-18 11:05:38 +01:00
jesopo
eaee51f677 Don't try to set repo to org after we've already changed org 2019-05-17 10:28:34 +01:00
jesopo
5513cc3a80 change REGEX_ISSUE to actually accept a repo name without org name 2019-05-17 10:28:18 +01:00
jesopo
f3d9fbb216 Actually assume the provided "org" is the repo when repo isn't provided 2019-05-17 10:14:49 +01:00
jesopo
3411f12fc4 Use github-default-repo to fill in org when org is missing but repo isn't 2019-05-17 10:10:27 +01:00
jesopo
3bbc4b3b77 server -> event["server"] 2019-05-16 14:28:20 +01:00
jesopo
385a4e3d4e channel -> event["channel"] 2019-05-16 14:27:07 +01:00
jesopo
ce1558e48b Catch-and-bury utils.EventError in auto-github code 2019-05-16 14:25:37 +01:00
jesopo
54e8fc8029 \S not \s in github issue ref regex 2019-05-16 14:25:18 +01:00
jesopo
7ce6af53f7 _parse_pull and _parse_issue shouldn't have an event param anymore 2019-05-16 14:20:50 +01:00
jesopo
a2321c693c _gh_* functions were renamed 2019-05-16 14:18:42 +01:00
jesopo
20514cc871 Add auto-github setting to automatically match and resolve github issue/pr
refs
2019-05-16 14:17:04 +01:00
jesopo
e0311c4b73 Allow people with silence permission to use !silence too 2019-05-16 08:53:28 +01:00
jesopo
bf7d359092 Add a setting to opt-out of word count tracking 2019-05-15 22:44:47 +01:00
jesopo
052eba788f Show server versoin (from RPL_MYINFO) on /api/servers 2019-05-15 17:13:05 +01:00
jesopo
7547eee96d Catch server version string, from RPL_MYINFO 2019-05-15 17:12:21 +01:00
jesopo
94d2f103b0 Don't show ducks when the bot is silenced 2019-05-15 16:48:20 +01:00
jesopo
278d6f02d6 Don't collect preprocess.command errors after we get a HARD_FAIL 2019-05-15 16:41:49 +01:00
jesopo
eb456f0123 Set silence.py's preprocess.command hook to PRIORITY_HIGH, so that other
modules can't respond to the event with errors first
2019-05-15 16:39:11 +01:00
jesopo
f97eceb395 Import IRCBot in metadata.py 2019-05-15 11:19:40 +01:00
jesopo
af4edf389f '_cap(' -> '_ack(' 2019-05-15 11:11:12 +01:00
jesopo
7cccb482b7 Add first version of metadata.py - for ircv3 draft/metadata 2019-05-15 10:33:39 +01:00
jesopo
99ce2ac6dd Switch to using utils.irc.Capability in sts.py 2019-05-15 10:31:55 +01:00
jesopo
a80eda614d Add IRCBot.SOURCE, use it in ctcp.py 2019-05-15 10:30:36 +01:00
jesopo
5ca9ae550d msgid has been ratified 2019-05-15 08:45:59 +01:00
jesopo
7ed4d5fa03 draft/msgid isn't ratified quite yet 2019-05-14 23:07:55 +01:00
jesopo
421d9c10c7 Add utils.irc.MessageTag and use it for both draft and ratified msgid 2019-05-14 13:02:45 +01:00
jesopo
b75fc02c4b Add comment to clarify why we ignore 1-letter-nicks in _prevent_highlight 2019-05-14 11:01:31 +01:00
jesopo
69691e9c79 Don't prevent highlights for single-letter nicknames 2019-05-14 10:50:47 +01:00
jesopo
e09529260a Pass server object in to _prevent_highlight 2019-05-14 10:24:31 +01:00
jesopo
9aeee86165 use irc_lower for preventing highlights, only lower() when needed 2019-05-14 10:15:52 +01:00
jesopo
0625102fa7 if_silenced_f -> is_silenced_f 2019-05-13 20:58:44 +01:00
jesopo
0fbf993201 Expose is-silenced through Exports, use it in karma.py 2019-05-13 20:57:47 +01:00
jesopo
e8c4a92119 Fix copypaste fail for getting for Exports in karma.py 2019-05-13 20:57:29 +01:00
jesopo
7922f6e9a5 Added !silence, to silence the bot in a channel for 5 mins 2019-05-13 20:50:31 +01:00
jesopo
8885b407ea Add !botlist and !rollcall 2019-05-12 22:37:08 +01:00
jesopo
d0573706e5 Move all actual nickname changing until AFTER events are fixed. it was actually
set_own_nickname that was really causing the issue.
2019-05-12 22:20:42 +01:00
jesopo
26f63410f2 Provide missing % formatting param for github release events
closes #52
2019-05-12 22:09:19 +01:00
jesopo
bc68b50874 send() is only for parsed irc lines 2019-05-12 22:07:25 +01:00
jesopo
3e9d628d64 Change user nickname before firing (received/self).nick events 2019-05-12 22:07:04 +01:00
jesopo
8c3ea677ec Switch signals.py SIGHUP to also load new modules 2019-05-12 14:11:29 +01:00
jesopo
bb073dcdce Handle ERR_SASLALREADY 2019-05-12 11:48:28 +01:00
jesopo
2d6d2a98d7 Typo in ducks.py, 'DEFAUL' -> 'DEFAULT' 2019-05-11 18:26:53 +01:00
jesopo
d291cd5063 Revamp how CAPs are tracked through REQ and ACK/NAK etc 2019-05-11 18:22:40 +01:00
jesopo
6ef7f8374d Change ducks-min-message default to 100 2019-05-11 17:19:31 +01:00
jesopo
73052ddc49 Update !help usage string 2019-05-11 17:07:24 +01:00
jesopo
295f7a751c Refactor CAPs in to objects 2019-05-11 15:11:09 +01:00
jesopo
90f375d764 Remove unused SCRAM functions from sasl/__init__.py 2019-05-11 15:07:53 +01:00
jesopo
81bb0242fe Change !help to be !help <module> <command> 2019-05-10 16:11:53 +01:00
jesopo
4986c52d9b ignore users ignored from !factoid for automatic factoid parsing 2019-05-09 13:48:45 +01:00
jesopo
9bdd28ce60 Ignore users ignored from !youtube for auto-youtube 2019-05-09 13:43:52 +01:00
jesopo
5dd019d79f Handle dangling spaces at the end of a NAMES response 2019-05-09 11:55:35 +01:00
jesopo
511a1836bb Only split NAMES reply at literal space, .split() is overzealous 2019-05-09 11:31:58 +01:00
jesopo
f7eae1a978 Tokenize IRC data as soon as it comes out of IRCServer 2019-05-09 10:36:33 +01:00
jesopo
cb25f70418 Catch UserNotFoundException in var e 2019-05-08 07:36:17 +01:00
jesopo
920c1d2cd8 Log URL when we fail to get a <title> 2019-05-07 14:44:29 +01:00
jesopo
ed8761ed5c Change !uuid to !uuid4 to be clear that it's a uuid4 being generated 2019-05-07 11:48:16 +01:00
jesopo
670f682c62 Remove '"human"' key from location settings export - we dont use it and it's
using elements of 'location' that were removed
2019-05-07 10:59:24 +01:00
jesopo
543a01882b Don't parse '/me's as commands 2019-05-06 23:26:13 +01:00
jesopo
3e3e39e054 Fix birthday.py help text copypaste fail 2019-05-06 19:27:42 +01:00
jesopo
c11afedba9 Add !serverunignore 2019-05-06 17:17:06 +01:00
jesopo
96550eaef0 put permission control on !serverignore, don't rely on setting default of None 2019-05-06 17:16:48 +01:00
jesopo
a368bc018a server -> event["server"] 2019-05-06 17:13:09 +01:00
jesopo
8312efcc1c Pass server param to _is_ignored 2019-05-06 17:12:05 +01:00
jesopo
0114d35d4c Add a mechanism to ignore specific commands for a whole network 2019-05-06 17:08:56 +01:00
jesopo
ac19e9cc95 Support only saving birthday day and month 2019-05-06 16:26:23 +01:00
jesopo
61b7dd33b6 Add !birthdays command to show birthdays today 2019-05-06 14:54:45 +01:00
jesopo
6f9383666f Make birthdays more exciting 2019-05-06 09:05:31 +01:00
jesopo
f5d407830d Added birthday.py 2019-05-05 22:54:55 +01:00
jesopo
f04d9d966e Query weather for given args if they don't look like a user 2019-05-05 00:16:55 +01:00
jesopo
f715e46155 Stop using prevent_highlight. it ruins terminals on OS X 2019-05-04 23:28:51 +01:00
jesopo
dc17ef7bb9 Only handle 324 when we're actually in the channel 2019-05-04 21:39:35 +01:00
jesopo
009daaeb62 Give empty array arg to WARN call in github module 2019-05-04 08:26:27 +01:00
jesopo
d999548020 Change min duck messages to 40, change chance back to 5% 2019-05-03 16:47:56 +01:00
jesopo
8c8205522e Actually import EventManager in ducks.py 2019-05-03 16:40:21 +01:00
jesopo
4d8b1a1a0d Set received.message.channel priority to PRIORITY_MONITOR 2019-05-03 16:38:45 +01:00
jesopo
167fe7b070 Add !friends and !enemies to ducks.py 2019-05-03 16:34:41 +01:00
jesopo
c89742a7e7 Reset duck_lines to 0 when a duck has spawned 2019-05-03 16:26:35 +01:00
jesopo
b7e14148bb Change duck-spawn change to 10% per message after 20 messages 2019-05-03 16:07:49 +01:00
jesopo
8ac93d57f3 there's no event in bootstrap_channel 2019-05-03 15:44:13 +01:00
jesopo
2fd92ce2fa bootstrap old channels for ducks.py 2019-05-03 15:42:39 +01:00
jesopo
5bfffc25e9 Refector ducks.py 2019-05-03 15:34:54 +01:00
jesopo
1a2309e4fc add 'print-motd' bot setting, to enable/disable printing motd to log 2019-05-02 10:24:01 +01:00
jesopo
6e25505bba Remove import pytz from location.py, we don't use it 2019-05-01 16:15:42 +01:00
jesopo
ed57ac7c17 Move isgd.py to shorturl.py and switch back to using bit.ly 2019-05-01 08:17:48 +01:00
jesopo
44b15073e7 No longer prefix stderr with "!", it doesn't really make sense 2019-04-30 22:45:52 +01:00
jesopo
677b488ab0 Typo in commands/outs.py, 'methd' -> 'method' 2019-04-30 22:45:37 +01:00
jesopo
8a9fedb875 Limiit !to to 5 messages per user 2019-04-30 11:57:31 +01:00
jesopo
2d2ea2fc3a Added pronouns.py 2019-04-30 11:51:43 +01:00
jesopo
1ed9d06c9d resume.py should be using IRCServer.send_raw 2019-04-28 20:41:55 +01:00
jesopo
bcae650565 Actually provide formatting arg for user_time.py error 2019-04-28 15:43:56 +01:00
jesopo
3fce209a99 Change location.py to use lat/lon instead of continent/country/city 2019-04-28 15:38:26 +01:00
jesopo
74ef18a418 Add !w as an alias of !weather 2019-04-28 15:21:09 +01:00
jesopo
a7a3f5fd25 Remove incorrect and redundant usage !weather 2019-04-28 15:20:37 +01:00
jesopo
91d32dae9b "%", not "," 2019-04-28 14:13:26 +01:00
jesopo
33fc4ffbf7 Actually provide user nickname in !weather error message 2019-04-28 14:12:35 +01:00
jesopo
fbdd254c69 Add echo.py 2019-04-28 13:36:25 +01:00
jesopo
0ba1b275d9 Add user_time.py 2019-04-28 12:12:00 +01:00
jesopo
cbed30ed62 Change location.py to use geocoding, change weather.py in line with it 2019-04-28 12:11:23 +01:00
jesopo
795a9a91af Remove debug print 2019-04-28 10:51:18 +01:00
jesopo
4466bc34de Add location.py, to allow users to set their location 2019-04-28 10:50:35 +01:00
jesopo
24716402ec Show the full result of a !config change 2019-04-28 10:50:19 +01:00
jesopo
347253249e Add a setting to automatically shorten URLs when their title is retrieved 2019-04-28 00:35:41 +01:00
jesopo
98deba18ed Add _name to urbandictionary.py for correct capitalisation 2019-04-27 22:27:36 +01:00
jesopo
437418d006 Use is-ignored export in title.py to ignore users for auto-title 2019-04-27 14:55:48 +01:00
jesopo
a5f8bb7d3d Use is-ignored export in karma to allow ignoring users for karma 2019-04-27 14:51:26 +01:00
jesopo
5f4d5eb270 Use is-ignored export in sed.py to allow ignoring users from sed 2019-04-27 14:49:57 +01:00
jesopo
df39570d4a Add ability to ignore users per-command 2019-04-27 14:49:45 +01:00
jesopo
f8e933d4cc Delete 'ignore' setting when unignoring so it doesn't hold space in the database
but still defaults to false
2019-04-26 07:57:20 +01:00
jesopo
bac9692ec5 Change channel_op's _name from "Channel Op" to "ChanOp" 2019-04-26 07:26:33 +01:00
jesopo
da52baebcc Check that we have an AbstractURL in DDG results 2019-04-25 20:49:27 +01:00
jesopo
b45b9b6219 Change copypasted !google help text 2019-04-25 20:19:25 +01:00
jesopo
789787b866 Add duckduckgo.py 2019-04-25 20:18:13 +01:00
jesopo
7643a962bd Refuse to get the title for any url that points locall 2019-04-25 15:58:58 +01:00
jesopo
9ac7ead57e Make masterlogin passwords one-time-use 2019-04-24 17:37:44 +01:00
jesopo
dffee4d223 Move REGEX_URL out of isgd.py and title.py in to utils.http 2019-04-24 15:46:54 +01:00
jesopo
cc9edc6adb link -> url 2019-04-24 15:37:14 +01:00
jesopo
50e3206a9f Aloow !shorten to find the last posted url and shorten it 2019-04-24 15:36:26 +01:00
jesopo
df42f1d9c5 Store full non-hashed auto-title url in setting value 2019-04-24 15:07:02 +01:00
jesopo
71eb640fbd Add ability to track (and show) who first send a specific link that was
auto-titled
2019-04-24 14:48:15 +01:00
jesopo
e095c56f77 Record and show when a !to was created 2019-04-24 14:32:56 +01:00
jesopo
dc102f258d Add Database.servers.get_by_alias, move IRCBot.get_server to
IRCBot.get_server_by_id, add IRCBot.get_server_by_alias and change
!connect/!disconnect to take aliases instead of IDs
2019-04-24 12:07:30 +01:00
jesopo
e3100bb64a Look at setting-specific part of export_settings to get validate function, not
the whole dang dictionary
2019-04-24 11:02:41 +01:00
jesopo
87340bcbf9 change utils.iso8601_format to default to no milliseconds, switch to using
utils.iso8601 functions in badges.py
2019-04-23 21:27:43 +01:00
jesopo
537613545d Only show 'submitted' pull_request_review events 2019-04-17 10:33:12 +01:00
jesopo
ee8c7813f7 Add IRCServer.send_raw so modules don't have to parse messages before sending
them
2019-04-16 13:47:45 +01:00
jesopo
959d6a067c Only show no-commit pushes when it's a force 2019-04-16 10:24:55 +01:00
jesopo
cc203f1756 Show a push event even when there's no commits in it 2019-04-16 10:20:11 +01:00
jesopo
16083309ef Add a space between channel name and kick reason in format_activity.py 2019-04-16 07:54:07 +01:00
jesopo
884d7ab06a Boldify sed replacement text 2019-04-15 21:55:53 +01:00
jesopo
8ecd1f31c7 'set.py' -> 'config.py' 2019-04-15 17:08:01 +01:00
jesopo
81e9548827 Allow adding perform.py commands through chat and add !performexecute, to
execute all perform commands post-connect
2019-04-15 16:53:52 +01:00
jesopo
210125d90b Only allow 'current channel' !config logic when we're in a channel 2019-04-15 16:48:04 +01:00
jesopo
f60deba6c7 Add a master-admin login system, to have a bot-wide password to give any user
using it complete admin permissions - mostly intended to add new admin users
2019-04-15 14:52:08 +01:00
jesopo
e12ad21c1a Add/remove people from channels before received.join/received.part events 2019-04-15 14:41:09 +01:00
jesopo
cf9898d5bd Support continuous alias arg replacements (e.g. "index 1 onwards" using "$1-") 2019-04-14 21:54:02 +01:00
jesopo
9e79320d50 'closed #123 without merging' -> 'closed #123' 2019-04-11 13:09:30 +01:00
jesopo
225c0d7793 Don't remove the first char of 'setting' twice 2019-04-07 17:46:35 +01:00
jesopo
2947b92792 Show result when a setting is unset 2019-04-07 17:45:35 +01:00
jesopo
5611f4ceef Strip "-" from setting name when first checking if it exists 2019-04-07 17:43:00 +01:00
jesopo
56dcc2306b Remove "-" from setting name before getting its value 2019-04-07 17:38:52 +01:00
jesopo
444f37c3da Add a way to unset a setting with !config 2019-04-07 17:36:29 +01:00
jesopo
d4c7c41c79 Add !config command, to group all settings activities in to 1 command 2019-04-07 14:00:27 +01:00
jesopo
b6d04152d0 Show QUIT reason as "" not None 2019-04-02 21:17:01 +01:00
jesopo
0b1c07b1ed Set PART reason to "" when it's None 2019-04-02 16:56:15 +01:00
jesopo
ad166a7d0a Correctly support SETNAME being targetted at us 2019-04-02 14:21:16 +01:00
jesopo
42f79d8f26 .get eage-api-key and url in nr.service() to handle it not being present 2019-04-01 07:50:19 +01:00
jesopo
c697c58b52 set cve.py's _name to all caps "CVE" 2019-03-28 21:54:18 +00:00
jesopo
f39b723af4 Added cve.py 2019-03-28 21:47:35 +00:00
jesopo
023c6c9264 Only strip word stops from the right of a word 2019-03-28 14:35:20 +00:00
jesopo
3f8d5e9f50 Also human-ify coin bet amounts in a flip 2019-03-21 21:09:53 +00:00
jesopo
2f729eac46 Show coins in "human" form (with commas) in flip wins/losses 2019-03-21 21:08:04 +00:00
jesopo
e6a32a8bb9 Don't handle commented state in pull_request_review 2019-03-19 16:10:59 +00:00
jesopo
76ae55499b Log which server an ERROR came from 2019-03-19 10:26:15 +00:00
jesopo
c4458653d2 Added some -minimal categories for comment-related events 2019-03-15 21:13:39 +00:00
jesopo
6cd171b7d8 'title' -> 'pr_title' 2019-03-15 19:28:37 +00:00
jesopo
4388d17b99 Better display for approval/changes_requested in pull request reviews 2019-03-15 10:33:02 +00:00
jesopo
be77188e71 Don't use short/coloured hash for shortened urls (github) 2019-03-14 13:58:42 +00:00
jesopo
f236f879f4 Reload bot.conf and modules on SIGHUP 2019-03-13 18:27:34 +00:00
jesopo
4058608bf2 Add 'api-port' setting to bot.conf and use it in rest_api.py 2019-03-13 16:52:51 +00:00
jesopo
6463bb16b5 move code in to the string format arg for log functions 2019-03-13 13:35:42 +00:00
jesopo
6c5a6ff9cd Show returned status code when _handle finishes 2019-03-13 13:33:53 +00:00
jesopo
df3075ce27 Show user hostmask (not just nick) on formatted.join 2019-03-12 10:41:45 +00:00
jesopo
9026f722c1 Remove default logging, show request path in our own _handle logging 2019-03-11 12:16:56 +00:00
jesopo
96f8777a8f Show ip and port as "ip:port" in _handle logging 2019-03-11 12:14:29 +00:00
jesopo
9d91ea6ed4 DEBUG log when REST API _handle starts and finishes 2019-03-11 12:12:51 +00:00
jesopo
695327c2e8 Don't fail when eagle api url/key are not present 2019-03-11 09:42:34 +00:00
jesopo
b995d9f954 Add --require-config hashflag in nr.py 2019-03-11 09:42:16 +00:00
jesopo
5d7f017c9c Enum values shouldn't be all upper case 2019-03-10 13:14:25 +00:00
jesopo
2dc290951a preprocess.send.* event don't have IRCChannel objects on them 2019-03-10 13:09:37 +00:00
jesopo
c2eb96882a show short commit hash in individual push messages (github) 2019-03-10 10:31:32 +00:00
jesopo
2d949391a6 Support setting strip-color per-channel not just per-server 2019-03-09 13:37:59 +00:00
jesopo
4f74ca4c0c Handle trying to strip colours from a PRIVMSG/NOTICE that has no message 2019-03-08 23:23:38 +00:00
jesopo
5165e53264 Fix local variable overwrite for reason in formatted.quit logic 2019-03-08 17:20:57 +00:00
jesopo
c973dc550c prefix formatted.mode.channel with "- " 2019-03-08 09:53:04 +00:00
jesopo
cbd6092ff1 Send IRCUser object on formatted.quit event 2019-03-07 21:44:32 +00:00
jesopo
c8f5f0b0ad "- " should have been inside the string 2019-03-07 18:01:00 +00:00
jesopo
7811d9874c Prefix user-related lines in format_activity with "- " 2019-03-07 17:58:17 +00:00
jesopo
b9fa74dbb5 Move PR number into/after action for pull_request events 2019-03-07 08:35:29 +00:00
jesopo
1dad4827b6 Set a user's username/hostname/account BEFORE sending a received.join 2019-03-06 15:51:10 +00:00
jesopo
c876940443 Set username/hostname on users on JOIN regardless of whether we know theirs
already
2019-03-06 15:50:24 +00:00
jesopo
fb5b956f99 Send IRCChannel on formatted.topic-timestamp event 2019-03-06 15:04:19 +00:00
jesopo
ed3fc0e5d4 don't utils.irc.parse_format in format_activity.py, so we don't have to use
raw_line in channel_log
2019-03-06 14:30:33 +00:00
jesopo
380d91aba7 Expose 'log' channel setting to !channelset 2019-03-06 13:57:41 +00:00
jesopo
b4b15e5678 Don't treat ACTION CTCP as a different event to normal PRIVMSGs 2019-03-06 13:51:38 +00:00
jesopo
61acf6cd8e Attach channel object to formatted.rename events 2019-03-06 13:39:20 +00:00
jesopo
77dd36cbf6 Add channel_log module for per-channel logging 2019-03-06 13:36:46 +00:00
jesopo
9920721bc5 Pass IRCChannel and IRCUser objects on formatted events where applicable 2019-03-06 13:36:18 +00:00
jesopo
bca0d38388 Also print private notices 2019-03-06 08:08:40 +00:00
jesopo
b5b841033f Do format parsing (color, bold, etc) in format_activity.py 2019-03-06 08:08:20 +00:00
jesopo
b549a28bed 'pull' -> 'PR' in !ghpull 2019-03-05 11:41:24 +00:00
jesopo
11c4d70156 add IRCServer.clear_send_buffer() to clear queued lines 2019-03-05 11:35:24 +00:00
jesopo
91c2ab03ba add IRCServer.send_enabled, to prevent sending after QUIT in signals.py 2019-03-05 11:29:46 +00:00
jesopo
68ebecedfd Don't send random quit quote on SIGINT 2019-03-05 11:25:34 +00:00
jesopo
9e98754188 Treat our own user as a regular user throughout line_handler 2019-03-05 11:20:32 +00:00
jesopo
79930be7a3 private notices shouldn't be sent out as formatted.notice.channel 2019-03-05 09:52:38 +00:00
jesopo
b4f3ff3344 _on_topic doesn't take an IRCChannel param 2019-03-05 09:30:50 +00:00
jesopo
2750f29989 We need to pass a user object to _privmsg 2019-03-05 09:30:36 +00:00
jesopo
0a5ebd0cf4 Use utils.ISO8601_PARSE in format_activity 2019-03-05 09:30:10 +00:00
jesopo
a9a3ad7abd import datetime in format_activity.py 2019-03-05 09:29:54 +00:00
jesopo
db9744a0b5 Move formatted lines to loggable format to format_activity.py 2019-03-05 09:19:06 +00:00
jesopo
cf262c6d8a We need to import EventManager in line_handler/__init__.py 2019-03-03 23:34:39 +00:00
jesopo
4aa86f865c Remove added/removed/modified counts from commits (github) 2019-03-03 22:49:06 +00:00
jesopo
2affba99ca Minor refactors across line_handler 2019-03-03 22:46:24 +00:00
jesopo
4aa9a06635 @utils.hook shouldn't be in line_handler/message.py 2019-03-03 22:45:54 +00:00
jesopo
7a3db82300 Add IRCServer.has_capability and use it throughout line_handler 2019-03-03 22:38:34 +00:00
jesopo
7c654b4475 Add COLOR_NEUTRAL, show repo/number/state colours in !ghissue 2019-03-02 21:32:08 +00:00
jesopo
a063f54a38 Don't show "[]" when there are no labels in !ghissue 2019-03-02 21:14:51 +00:00
jesopo
91a7f622b8 Don't check github-hide-prefix in !ghwebhook 2019-03-02 09:30:53 +00:00
jesopo
6b3b2b6e87 pinkify pull request number in !ghpull 2019-03-02 08:44:32 +00:00
jesopo
1ad9bd2047 Actually use colored state in formatted line 2019-03-02 08:40:04 +00:00
jesopo
e4a4b193fe Colour the state of a pull request 2019-03-02 08:38:56 +00:00
jesopo
c45fcb34d1 Change PR/issue number color to pink 2019-03-02 08:38:45 +00:00
jesopo
a30bc92b94 We don't need a "-" to separate PR title anymore 2019-03-02 08:31:06 +00:00
jesopo
7c63dbcf00 Tweak !ghpull format/colours 2019-03-02 08:29:45 +00:00
jesopo
b1e40e8d4c Move HTTPWrongContentTypeException catch above Exception catch 2019-03-01 23:29:07 +00:00
jesopo
ab0b3be741 event doesn't have a "channel" in an API hook 2019-03-01 22:21:07 +00:00
jesopo
293b3a8ce3 Fix event variable name collision (github) 2019-03-01 21:47:00 +00:00
jesopo
88a28352b8 Add a setting to hide github repo names 2019-03-01 21:20:19 +00:00
jesopo
43eda14267 Capitalise 'PR' in issue_comment events for pull requests (github) 2019-03-01 21:12:46 +00:00
jesopo
1e9772e578 Actually take coins when the house wins (coins) 2019-03-01 15:00:56 +00:00
jesopo
4467ba8ab6 specifically handle HTTPWrongContentTypeException in title.py 2019-02-28 23:30:09 +00:00
jesopo
9193a51c55 capitalise "PR" (Pull Request) 2019-02-28 23:16:37 +00:00
jesopo
985fc51dea Move issue/PR number to after action description (github) 2019-02-28 23:15:13 +00:00
jesopo
1dab3dd07e Change HTTP request logging from INFO to DEBUG 2019-02-28 17:51:26 +00:00
jesopo
35ba165e0c Don't use shortened commit hashes to make URLs 2019-02-28 17:21:19 +00:00
jesopo
b4fca127d1 COLOR_POSITIVE should be green and COLOR_NEGATIVE should be red 2019-02-28 17:18:47 +00:00
jesopo
ae95f81c8b Colorise PR/issue numbers (github) 2019-02-28 17:10:42 +00:00
jesopo
02c7c4503c Make repo name grey (github) 2019-02-28 17:10:31 +00:00
jesopo
58b1e41b5d Make some colours consts per type of content (github) 2019-02-28 17:09:52 +00:00
jesopo
cedd080f75 only use one "-" to separate text from url in lastfm.py 2019-02-28 16:34:22 +00:00
jesopo
bb6b292b6c userplaycount is a str, not an int 2019-02-28 16:23:53 +00:00
jesopo
e77d681d7d Don't show lastfm play count if it is 0 2019-02-28 16:22:35 +00:00
jesopo
f431fdfd16 Put github-hide-prefix check in all github commands 2019-02-27 14:56:20 +00:00
jesopo
0ed6d05b03 check on github-hide-prefix was put in the wrong function 2019-02-27 14:55:28 +00:00
jesopo
e6cb5e3e6b Remove additional ')' (copypaste fail) 2019-02-27 14:53:03 +00:00
jesopo
52092cfe28 Make github-hide-prefix apply to !gt as well 2019-02-27 14:52:10 +00:00
jesopo
120eb03173 Show sender of an issue_comment, not the original commenter (for edits) 2019-02-26 21:55:34 +00:00
jesopo
5eceb5655c Minor code stylisation in imgur.py 2019-02-25 09:59:38 +00:00
dngfx
6471360656
Update imgur.py 2019-02-25 09:01:52 +00:00
Dan
6771c3fec1 Switch to elif 2019-02-24 21:14:08 +00:00
Dan
ccd924d9e7 Remove superfluous json import and change datetime to match code standards. 2019-02-24 21:13:02 +00:00
Dan
4daba2b1ac Remove bold title, set NSFW_TEXT variable, fix bold spacing, fix PEP8 line breaks between definitions. Remove _imgur def and hook straight into code. 2019-02-24 21:10:25 +00:00
dngfx
0444f9c0b9
Update imgur.py
Remove debug logging cruft
2019-02-24 20:37:17 +00:00
dngfx
266cbbfe1e
Update imgur.py
Add auto-imgur for auto linking of imgur and make the linking a bit fancier.
2019-02-24 20:34:10 +00:00
jesopo
f3f6102dbc Don't duplicate "other-error" (sasl.scram) 2019-02-24 09:04:42 +00:00
jesopo
77ab4707b2 Send IRCBot.VERSION on a CTCP VERSION (ctcp.py) 2019-02-24 08:39:20 +00:00
jesopo
fdce6ef7a6 We now need to .send( an IRCLine.ParseLine in perform.py 2019-02-24 08:04:35 +00:00
jesopo
1473f41b03 Fire preprocess.send per-command - use this to only strip colors from ParsedLine
objects for PRIVMSG and NOTICE
2019-02-23 21:40:11 +00:00
jesopo
8c94bcf6ca Move utils.irc.IRCParsedLine to IRCLine.ParsedLine, improve truncation
mechanism, don't convert sent line from ParsedLine to text to ParsedLine for
line_handler handling
2019-02-23 21:33:04 +00:00
jesopo
f4a403836b !raw needs to parse the line it's given in to an IRCParsedLine now 2019-02-23 16:11:41 +00:00
jesopo
6bdec003a1 Split PRIVMSG last param explicitly by " " to make message_split 2019-02-23 10:54:17 +00:00
jesopo
ed4643b15d Use new IRCChannel/IRCUser send_tagmsg in message_tracking.py 2019-02-22 22:37:27 +00:00
jesopo
9d72cbca73 Keep track of a user's away message, not just whether they're away or not 2019-02-22 22:26:50 +00:00
jesopo
dec3485071 Clear command Out text when there's nothing left to send 2019-02-22 17:47:25 +00:00
jesopo
9408cc9487 Typo, 'ValuError' -> 'ValueError' 2019-02-22 17:44:46 +00:00
jesopo
76c6cc3709 Typo, 'taget' -> 'target' 2019-02-22 16:31:17 +00:00
jesopo
5cae86333b Typo, 'channels' -> 'channel' 2019-02-22 11:27:31 +00:00
jesopo
2b430839f9 .on doesn't take kwargs - .call does 2019-02-22 11:26:48 +00:00
jesopo
6177d5c984 Typo, 'channels' -> 'channel' 2019-02-22 11:25:04 +00:00
jesopo
47c2cbb0fa Split line_handler.py out in to different files for different categories 2019-02-22 11:23:36 +00:00
jesopo
7469ff5bd6 Remove unused threading import in line_handler.py 2019-02-22 10:26:31 +00:00
jesopo
1ac8bf6ec1 Support echo-message TAGMSG 2019-02-22 10:14:23 +00:00
jesopo
fde0838fdc Remove code duplication for checking if a PRIVMSG/NOTICE was sent by us 2019-02-22 10:13:49 +00:00
jesopo
46fc552972 Add a require_access attribute to !ghwebhook 2019-02-21 21:18:07 +00:00
jesopo
0fc2dd8754 You can't minus a set from a list (auto_mode.py) 2019-02-21 21:14:57 +00:00
jesopo
1da66fb72d Only give users auto_modes they don't already have (auto_mode.py) 2019-02-21 21:14:09 +00:00
jesopo
827832b2d2 Add channel_access attributes to auto_mode.py commands 2019-02-21 21:10:06 +00:00
jesopo
e28885f746 Don't handle pull_request_review events when they've not been submitted 2019-02-21 11:19:36 +00:00
jesopo
deedab7248 Add IRCServer.send_joins, a nicer interface than manually ",".joining 2019-02-20 17:08:30 +00:00
jesopo
7f2b19cee3 Only send TAGMSG when it's definitely supported (message_tracking.py) 2019-02-20 16:10:37 +00:00
jesopo
ebd02dbfa9 IRCv3 message-tags has been ratified 2019-02-20 15:59:33 +00:00
jesopo
81d82413d4 draft/message-tags-0.3 (JSON tags) was rejected 2019-02-20 14:46:40 +00:00
jesopo
807021ecc4 Pass key through to _get_settings (rest_api.py) 2019-02-19 19:49:13 +00:00
jesopo
a3a75f3480 Remove copy-pasted ":" (rest_api.py) 2019-02-19 19:47:14 +00:00
jesopo
2691fa52e6 Do database-related work on UI thread (rest_api.py) 2019-02-19 19:45:26 +00:00
Jos Ahrens
850c717925
quit: Fix style but better
Positions the colon consistently, but better.
2019-02-19 18:06:24 +01:00
Jos Ahrens
7a7ae615da
quit: Fix style
Positions the colon consistently.
2019-02-19 18:02:24 +01:00
Evelyn
8879e6416e How can you govern a country that has two hundred and forty-six varieties of cheese? 2019-02-19 15:03:31 +00:00
jesopo
cfdb48b3e7 Use IRCRecvBatch in line_handler.py 2019-02-18 23:01:25 +00:00
jesopo
186b6b82a2 Shift formatting protocol data to it's own file: utils.irc.protocol 2019-02-18 14:58:27 +00:00
jesopo
cae6d970ca Sometimes lastfm doesn't give us a list of tracks (lastfm.py) 2019-02-18 13:22:12 +00:00
jesopo
6da35a899b don't pass around has_arbitrary - we don't need it. 2019-02-18 12:42:52 +00:00
jesopo
3a3b197309 Default cap_done to True, there's only one scenario were it is false (resume.py) 2019-02-17 16:00:33 +00:00
jesopo
dc7cdf31d0 Use '&lt;' for '<' in README (permissions) 2019-02-17 14:29:50 +00:00
jesopo
5809ff8490 Add section about identifying (permissions README.md) 2019-02-17 14:28:59 +00:00
jesopo
9f2c501df6 Typo, 'BitBo' -> 'BitBot' (permissions) 2019-02-17 14:27:56 +00:00
jesopo
ec49140a70 Move permissions.py in to a directory and add a README.md for it 2019-02-17 14:26:18 +00:00
jesopo
cb0314da67 Put a helper function in utils to do iso8601 formatting. change IRCServer's
last-read setting to use it.
2019-02-17 14:15:40 +00:00
jesopo
107205d29a Only completely prevent CAP END when we get RESUME SUCCESS (resume.py) 2019-02-17 12:48:22 +00:00
jesopo
92349ad696 typo, 'server.get_settings' -> 'server.get_setting' (resume.py) 2019-02-16 15:53:59 +00:00
jesopo
faf2401069 'received.numeric.###' -> 'received.###' throughout project 2019-02-16 15:53:14 +00:00
jesopo
342c1afa7e Keep a track of channels we're in, in case we RESUME and need to get channel
information (e.g. `chathistory`) (resume.py)
2019-02-16 11:23:40 +00:00
jesopo
716568c21d 'src/IRCServer.capabilities' -> 'src/IRCServer.agreed_capabilities' 2019-02-16 09:12:43 +00:00
jesopo
3e4f3532a1 Put spaces either side of arrow symbol, makes it easier to see (github) 2019-02-16 09:06:29 +00:00
jesopo
e1ceed2907 Typo in comment, 'of' -> 'or' (sasl.scram) 2019-02-15 20:12:13 +00:00
jesopo
686d852e2b SCRAM.error should be within standardised errors (put raw in self.raw_error) 2019-02-15 20:09:32 +00:00
jesopo
e51c653c1e Parse and print when we send QUIT commands (line_handler, print_activity) 2019-02-15 19:58:51 +00:00
jesopo
f6179c46ab Actually grab resume timestamp before it's overwritten (resume.py) 2019-02-15 10:26:33 +00:00
jesopo
a50b8c5694 comment typo, 'tage' -> 'tag' (github) 2019-02-15 07:49:07 +00:00
jesopo
a7d3fd93fc hmac.digest -> hmac.new (the former is too new) (sasl.scram) 2019-02-15 01:21:39 +00:00
jesopo
4e7bfee3a6 Only send +draft/delivered and +draft/read on private message 2019-02-15 00:07:33 +00:00
jesopo
3efe97f6bb copypaste fail, server -> event["server"] (message_tacking.py) 2019-02-14 21:59:00 +00:00
jesopo
52387900bc Support draft/delivered and draft/read (message_tracking.py) 2019-02-14 21:51:51 +00:00
jesopo
ec3096fb50 Put information about USERPASS in sasl/README.md 2019-02-14 12:28:36 +00:00
jesopo
d0ad43b027 Support a USERPASS sasl mechanism that picks the best user:pass mech (sasl) 2019-02-14 11:57:53 +00:00
jesopo
33cacbb904 Don't crash when we try to send a message to channel we're not in
(line_handler.py)
2019-02-14 08:36:41 +00:00
jesopo
15fc5f7124 raise EventError when no results are found, to avoid double stderr write (youtube.py) 2019-02-14 01:00:16 +00:00
jesopo
2794d7235b 'current_badges' -> 'badges' (badges.py) 2019-02-13 16:33:28 +00:00
jesopo
b5b0464873 Typo, 'recieved' -> 'received' (badges.py) 2019-02-13 16:32:31 +00:00
jesopo
3834b246d6 Add !clearbadges (badges.py) 2019-02-13 16:31:32 +00:00
jesopo
acbe02baa6 Support IRCv3 draft/setname proposal (#361) (line_handler.py) 2019-02-13 10:59:37 +00:00
jesopo
5b561b51f4 Fix completely broken chghost code. What on god's earth was I thinking. 2019-02-13 10:56:52 +00:00
jesopo
1927c3c8af Catch and propagate IRCv3's FAIL command (#357) (line_handler.py) 2019-02-13 10:39:10 +00:00
jesopo
460d56eb74 Never allow use of MD2 (sasl.scram) 2019-02-12 23:52:09 +00:00
jesopo
ac958384fe SCRAM doesn't need constant_time_compare, nonces prevent replay (scram.py) 2019-02-12 23:47:24 +00:00
jesopo
62d2449958 MONITOR actually catches NICK changes (nick_regain.py) 2019-02-12 21:01:28 +00:00
jesopo
ef43c9aeef Also use ISON even if MONITOR is supported - to catch NICK changes
(nick_regain.py)
2019-02-12 20:59:11 +00:00
jesopo
f2a7acfe4d Use RPL_ENDOFMOTD or ERR_NOMOTD to denote end-of-registration and a time to
check if we got MONITOR in 005 at any point (nick_regain.py)
2019-02-12 20:48:52 +00:00
jesopo
554b041822 Remove debug print (nick_regain.py) 2019-02-12 20:43:50 +00:00
jesopo
3fc2fec324 Add nick_regain.py, to watch for the bot's desired nick becoming free 2019-02-12 20:42:26 +00:00
jesopo
1f1a19b5b6 set nick to '<nickname>|' when we get a nickname-in-use error (line_handler.py) 2019-02-12 20:40:40 +00:00
jesopo
2e925a6853 user is null when we sent a NOTICE non-echo-message (line_handler.py) 2019-02-12 17:07:39 +00:00
jesopo
44df8240cc user is null when we're sending a message non-echo-mesasge (line_handler.py) 2019-02-12 17:04:55 +00:00
jesopo
e573f9de51 We can *receive* PRIVMSG/NOTICE without a prefix (line_handler.py) 2019-02-12 17:02:12 +00:00
jesopo
21b2e0bbe7 Typo, 'datetme' -> 'datetime' (ctcp.py) 2019-02-12 16:55:56 +00:00
jesopo
0e1535a88d Definte channel before trying to use it for event hook constuction
(line_handler.py)
2019-02-12 16:50:11 +00:00
jesopo
938495fc3a Refactor how CTCPs are sent through events 2019-02-12 16:49:57 +00:00
jesopo
b2d942027e Implement IRCv3 echo-message (line_handler.py) 2019-02-12 16:12:15 +00:00
jesopo
e1c81efa6f Add a way to blacklist CAPs per-network (line_handler.py) 2019-02-12 15:34:50 +00:00
jesopo
7e4c1cadb1 Add !cointoss to random_number.py 2019-02-12 15:23:02 +00:00
jesopo
ce23442f4b Use constant-time compare in permissions.py for password identifying 2019-02-12 11:59:47 +00:00
jesopo
9667b8a6e0 Move constant-time compare function to utils.security 2019-02-12 11:57:49 +00:00
jesopo
305b998a52 Use hmac.compare_digest to do a constant-time compare (sasl.scram) 2019-02-12 11:50:37 +00:00
jesopo
144182868c Upgrade resume.py to draft/resume-0.3 and support sending last-read timestamp 2019-02-12 11:14:36 +00:00
jesopo
8c9626f0a9 Put an strf format for ISO8601 in utils 2019-02-12 11:08:24 +00:00
jesopo
98b82c7f2c Insert label tag to lines in labeled BATCHes (line_handler.py) 2019-02-11 22:19:20 +00:00
jesopo
2f5a232c4e Hold on to tags and type for BATCHes 2019-02-11 22:15:12 +00:00
jesopo
b6df18930c bytes_written/bytes_read is now on IRCServer.socket (stats.py) 2019-02-11 18:26:16 +00:00
jesopo
399723db94 Show file add/remove/change *after* saying it's a push (github) 2019-02-11 11:17:07 +00:00
jesopo
18bb7ec4af Actually return function hook from _shutdown_hook (admin.py) 2019-02-11 10:09:39 +00:00
jesopo
e644888e3e Actually shutdown socket when !shutdown is called (admin.py) 2019-02-11 10:00:55 +00:00
jesopo
9b44b6cd13 Shift socket.socket related logic to IRCSocket.py 2019-02-11 10:00:41 +00:00
jesopo
d087143a5d Iterate through bot.servers.values(), not .keys() (admin.py) 2019-02-10 23:54:31 +00:00
jesopo
fadd21c6d9 Add !shutdown (admin.py) 2019-02-10 23:53:33 +00:00
jesopo
bb4ec082dd Let IRCLine.Line handle truncating command output 2019-02-10 20:49:59 +00:00
jesopo
abf5679b68 Parse sent data in IRCServer._send, not IRCServer.send 2019-02-10 20:49:03 +00:00
jesopo
9ecec75828 'jesopo pushed commit to master' -> 'jesopo pushed to master' (github) 2019-02-10 15:09:20 +00:00
jesopo
9235d23350 Show when pushes are forced (github) 2019-02-10 15:06:26 +00:00
jesopo
af3057dee0 Don't send empty JOIN when we have no saved channels (channel_save.py) 2019-02-10 14:55:46 +00:00
jesopo
cf64e8832b Make use of "when line sent" logic to disconnect after QUIT (signals.py) 2019-02-10 14:32:04 +00:00
jesopo
709365ecf8 Utilise new line-tracking logic to reconnect when QUIT sends (admin.py) 2019-02-10 14:26:24 +00:00
jesopo
d5bb3c5405 Have to refer to timer.kwargs to get kwargs (in.py) 2019-02-10 13:27:49 +00:00
jesopo
25096c651a Don't require client cert validation (rest_api.py) 2019-02-10 13:26:35 +00:00
jesopo
985f4d60a4 Only add a waiting clause for resume CAP if the server actually ACKs it
(resume.py)
2019-02-10 13:22:53 +00:00
jesopo
c7d21e2d9e Typo, 'wrap_scket' -> 'ssl_wrap' (rest_api.py) 2019-02-10 13:20:22 +00:00
jesopo
93dd75ff31 Added !inlist, to list !in reminders (in.py) 2019-02-10 13:18:25 +00:00
jesopo
1d206fe78f Use newly abstracted away ssl_wrap (rest_api.py) 2019-02-10 12:38:53 +00:00
jesopo
05ae25d3d7 ERROR log ERRORs from servers (line_handler.py) 2019-02-10 12:22:01 +00:00
jesopo
71eac9d3c0 Treat a QUIT from hostmask :* as referring to our connection (line_handler.py) 2019-02-10 00:29:22 +00:00
jesopo
ffdf49efc9 CAP END for RESUME TOKEN and RESUME ERR, don't for RESUME SUCCESS (resume.py) 2019-02-10 00:12:45 +00:00
jesopo
20d75e9716 Send request to RESUME a session AFTER we have a new token (resume.py) 2019-02-10 00:03:14 +00:00
jesopo
e2b019a9b8 log calls need a params arg (resume.py) 2019-02-10 00:02:24 +00:00
jesopo
84a3bf6135 Also capture channel setting-related modes (e.g. +f for flood settings) 2019-02-09 18:48:18 +00:00
jesopo
90618e883b Move REGEX_CUTOFF to outs.py (commands) 2019-02-09 17:52:51 +00:00
jesopo
1ff2a00c48 Move StdOut/StdErr specific consts to outs.py (commands) 2019-02-09 17:50:40 +00:00
jesopo
6b042d9460 Split command StdOut/StdErr in to their own file (commands) 2019-02-09 17:49:01 +00:00
jesopo
b9e71ec833 title is already a parsed string from _get_title() (title.py) 2019-02-09 13:38:09 +00:00
jesopo
8bbfd1d1c3 Add empty params arg to log call (title.py) 2019-02-09 13:37:21 +00:00
jesopo
730a4e6b87 Don't use the event system to get results from other modules - use exports 2019-02-09 13:14:45 +00:00
jesopo
4bc43f686e 'username' -> 'nickname', update RESUME nickname when our nickname changes (resume.py) 2019-02-09 12:33:26 +00:00
jesopo
d3f5ff78a6 Another 'new-token' -> 'new-resume-token' (resume.py) 2019-02-09 12:27:37 +00:00
jesopo
a23e46ddbf 'def on_cap_new' -> 'def on_cap_ls' (resume.py) 2019-02-09 12:27:13 +00:00
jesopo
1e6e030d6f Actually do 'resume' -> 'resume-token' (resume.py) 2019-02-09 12:26:47 +00:00
jesopo
feffb2325b "resume" -> "resume-token", "new-token" -> "new-resume-token", typo that was
causing resume token to be deleted as soon as it was set (resume.py)
2019-02-09 12:23:37 +00:00
jesopo
3fae5c52cd Forgot to import EventManager (title.py, youtube.py) 2019-02-09 10:57:32 +00:00
jesopo
31367b2b5d Eat youtube URLs on LOW priority, switch auto-title to MONITOR priority 2019-02-09 10:56:06 +00:00
jesopo
9f6aa93082 Actually return title text, not html Tag object (title.py) 2019-02-09 10:38:44 +00:00
jesopo
2ac5a53131 Add a setting to get the title from URLs automatically (title.py) 2019-02-09 10:35:37 +00:00
jesopo
6018cc098d We still need to 'CAP REQ :sasl' when we get 'CAP NEW :sasl' (sasl) 2019-02-09 02:58:25 +00:00
jesopo
697ce2ba30 Do a SASL reauthentication when we get CAP NEW for SASL (sasl) 2019-02-08 23:12:14 +00:00
jesopo
42e2596c9b Return semi-helpful information to github webhooks (github) 2019-02-08 23:01:45 +00:00
jesopo
d772eaf36e need to .items() a dict to tuple-iterate it (rest_api.py) 2019-02-08 22:53:33 +00:00
jesopo
678e6606ed Abstract away sending response to REST API request (rest_api.py) 2019-02-08 22:04:39 +00:00
jesopo
4a68baa0a6 Return path from _path_data() (rest_api.py) 2019-02-08 21:56:58 +00:00
jesopo
e84f91977c Typo, 'utils.parse' -> 'urllib.parse' (rest_api.py) 2019-02-08 21:55:42 +00:00
jesopo
12591d2357 Remove now not used params on _request() (rest_api.py) 2019-02-08 21:54:33 +00:00
jesopo
c7843a9338 Simplify/refactor REST API request parsing code (rest_api.py) 2019-02-08 21:52:24 +00:00
jesopo
dc0a021231 Show capabilities in API server stats (stats.py) 2019-02-08 17:56:13 +00:00
jesopo
9a0b8f3d00 server_capabilities is a dict, capabilities is a set (line_handler.py) 2019-02-08 17:48:41 +00:00
jesopo
91f78e834e Still REQ CAPs caught from cap.ls command if line_handler.py doesn't request any 2019-02-08 17:32:43 +00:00
jesopo
518f32c4ec Fix 2 misspellings of "capabilities" and fix having not changed a variable name 2019-02-08 17:32:00 +00:00
jesopo
15ab772442 Request CAPs we support when we see them advertised with CAP NEW
(line_handler.py)
2019-02-08 17:30:07 +00:00
jesopo
d3f23eafb8 make !sp and alias of !spotify (spotify.py) 2019-02-08 15:34:04 +00:00
jesopo
d61bb387f7 Show when a check_run is queued (github) 2019-02-07 23:05:29 +00:00
jesopo
a1496e5415 Check that a check_run actually started before it finished (github) 2019-02-07 22:59:50 +00:00
jesopo
03a1f62297 Script travis module in favour of github webhook check_run events 2019-02-07 22:34:54 +00:00
jesopo
fb125081ad Turn seconds in to seconds/minutes/hours/etc (github) 2019-02-07 22:32:48 +00:00
jesopo
ede385aca8 Use check_run event instead of status for CI (github) 2019-02-07 22:30:50 +00:00
Evelyn
ce78bd850a quit: add quote 2019-02-07 18:21:35 +00:00
jesopo
53a819512f Make commit hash LIGHTBLUE in status event (github) 2019-02-07 15:56:30 +00:00
jesopo
58cd6338fd Color/bold status state (github) 2019-02-07 15:49:36 +00:00
jesopo
c401c45a02 typo, "_short_id" -> "_short_hash" (github) 2019-02-07 15:46:07 +00:00
jesopo
f6079d92c8 Remove hanging "or" that i forgot to remove (line_handler.py) 2019-02-07 14:26:36 +00:00
jesopo
172acfd0d5 Tidy up logic to figure out of a NOTICE is a AUTH notice (line_handler.py) 2019-02-07 14:25:56 +00:00
jesopo
f5f5a55e21 Add command to list, add and remove travis webhooks (travis) 2019-02-07 14:05:12 +00:00
jesopo
0bdac094ea Actually accept !ghwebhook list as a command (github) 2019-02-07 14:01:24 +00:00
jesopo
7d25ce44ad Use HTML entity for less-than symbol (sasl README.md) 2019-02-07 13:53:46 +00:00
jesopo
35ad1c7c7b Add SASL README.md 2019-02-07 13:51:08 +00:00
jesopo
a3ca29dabe Show server name when we log a SASL failure (sasl) 2019-02-07 12:23:11 +00:00
jesopo
1485947fcc First commit of travis webhook module 2019-02-07 11:49:42 +00:00
jesopo
90591ec5b4 Change isgd.py to use Exports to offer url shortening, not events 2019-02-07 10:07:11 +00:00
jesopo
d013703705 commit_comment events have commit_id in comment, not in the root data (github) 2019-02-07 07:42:05 +00:00
jesopo
7dd1eca7ae Don't use string concat when we're already using %s formatting (sasl.scram) 2019-02-06 23:04:26 +00:00
jesopo
65766a093a Add more comments, re-seperate out self._ variables and seperate some compound
function calls on to different lines for readability (sasl.scram)
2019-02-06 22:58:16 +00:00
jesopo
c77d8aaac8 Default error to "", _client_first/_salted_password/_auth_message to b""
(sasl.scram)
2019-02-06 22:36:25 +00:00
jesopo
1bac2f67de Add type hints to SCRAM ctor (sasl.scram) 2019-02-06 22:33:30 +00:00
jesopo
50a8de2792 Restrict scram algorithms to IANA Hash Function Textual Names (sasl.scram) 2019-02-06 22:28:50 +00:00
jesopo
4e3e782519 Remove pointless local auth_message variable (sasl.scram) 2019-02-06 22:00:23 +00:00
jesopo
efbbe4c3db Move parsing username, password and algorithm to the only place that uses it and
add comments (sasl.scram)
2019-02-06 21:49:44 +00:00
jesopo
bffd43648d uuid.uuid4() is not random enough for a nonce (sasl.scram) 2019-02-06 21:49:24 +00:00
jesopo
67252833c4 Remove pointless local salted_password variable (sasl.scram) 2019-02-06 21:19:25 +00:00
jesopo
cbdd8d6fc9 Remove pointless local assign of self._password (sasl.scram) 2019-02-06 21:16:55 +00:00
jesopo
90b540d5dc Add type annotations to scram util functions (sasl) 2019-02-06 21:05:20 +00:00
jesopo
bf3986a1be Log a WARN when we get a 904 (failed sasl) 2019-02-06 16:25:43 +00:00
jesopo
16ea48cb54 Assume we'll receive a 904 when SCRAM fails with an e= param (sasl) 2019-02-06 15:50:42 +00:00
jesopo
c006435fa1 Set SCRAM state to just Failure if there's a server-final-message error (sasl) 2019-02-06 15:41:31 +00:00
jesopo
09eb3d3314 Only panic about a scram failure if it's a server-final-message failure (sasl) 2019-02-06 15:38:59 +00:00
jesopo
0e63700761 Only send auth_text if it's not None (sasl) 2019-02-06 15:37:34 +00:00
jesopo
be95514174 auth_text would not be present in a failure scenario 2019-02-06 15:36:59 +00:00
jesopo
cfa590eef7 Handle error on server-final-message (sasl.scram) 2019-02-06 15:28:17 +00:00
jesopo
403466dee3 Remove particularly improper quit quotes, add Hillel the Elder quote (quit.py) 2019-02-06 14:22:27 +00:00
jesopo
3e54542b6a arguments was not defined if they weren't provided (sasl) 2019-02-06 11:22:13 +00:00
jesopo
0004a8a59c Fix mypy linting issue with dict creation (scram.py) 2019-02-06 11:09:45 +00:00
jesopo
a7554b835e "+" as part of a SASL handshake is irc-specific so remove it from scram.py 2019-02-06 11:07:50 +00:00
jesopo
6b4bb7cdba Type annotate scram.py and don't pass base64 data to scram.py functions 2019-02-06 08:50:19 +00:00
jesopo
13083e60a6 Don't take a users coins when they make an invalid roulette bet (coins.py) 2019-02-05 23:00:56 +00:00
jesopo
aa7aa17ec1 Split hash and hmac logic out to their own functions (sasl.scram) 2019-02-05 22:53:55 +00:00
jesopo
5d51a283bb Actually check that we don't have CAPs that we're waiting on a ACK/NAK for
before ending CAP negotiation (line_handler.py)
2019-02-05 22:26:57 +00:00
jesopo
5991e02b0a Manually count ACK/NAK for REQed CAPs before ENDing CAP negotiation 2019-02-05 19:20:02 +00:00
jesopo
ff2d5ef7e7 Disconnect from server and throw an exception if SCRAM server verification fails
(sasl)
2019-02-05 17:04:00 +00:00
jesopo
fd08e23bd4 Move scripts module to it's own directory 2019-02-05 16:56:21 +00:00
jesopo
8e59809db2 CAP capabilities would not be index 2 if the line is multiline
(line_handler.py)
2019-02-05 16:48:12 +00:00
jesopo
b742b1ecee Remove debug print in sasl/__init__.py 2019-02-05 15:58:11 +00:00
jesopo
1fe20a2c98 Move sasl.py to a directory module and move SCRAM logic to a different file,
move `github/module.py` to `github/__init__.py`
2019-02-05 15:54:20 +00:00
jesopo
d4503fdf28 Remove SCRAM-related variables on IRCServer object when we see
server-final-message (sasl.py)
2019-02-05 12:53:19 +00:00
jesopo
d68c73affa Remove SCRAM debug logging (sasl.py) 2019-02-05 12:34:50 +00:00
jesopo
51a4b8ef4e Support SCRAM SASL mechanisms (sasl.py) 2019-02-05 12:17:25 +00:00
jesopo
0344ad6470 Add ")" that should have been removed when we stopped using enumerate for
github webhook hooks (github)
2019-02-04 21:35:31 +00:00
jesopo
ac16887c48 Reply to statusmsg commands (e.g. '/msg +channel !ping') with the same statusmsg 2019-02-04 21:32:44 +00:00
jesopo
e2d60a541c Try to match against full repository name first, so that we can make specific
rules for specific repositories (github)
2019-02-04 10:17:27 +00:00
jesopo
66d2ef2c26 We don't need to enumerate hooks (github) 2019-02-04 10:17:15 +00:00
jesopo
36e838d585 Delete automodes user_channel setting when it's empty (auto_mode.py) 2019-02-04 08:45:48 +00:00
jesopo
d7d707d980 user doesn't exist in _move(), it's user1 (coins.py) 2019-02-02 20:41:08 +00:00
jesopo
1b94a72a65 apikey command should have a minimum argument restriction (rest_api.py) 2019-02-01 12:02:02 +00:00
jesopo
520d8b681f Actually add private_unban function def. oops. (channel_op.py) 2019-01-30 21:07:03 +00:00
jesopo
d2dbb0a249 Add private message unban command (channel_op.py) 2019-01-30 21:06:02 +00:00
jesopo
98e1d4460e Actually use channel arg in _kick_command (channel_op.py) 2019-01-30 21:03:21 +00:00
jesopo
8345ea36d4 Support kick and ban command in private message (channel_op.py) 2019-01-30 21:02:12 +00:00
jesopo
cd93118571 server.get_channel was moved to server.channels.get a long time ago (set.py) 2019-01-30 19:40:20 +00:00
jesopo
a2e23acc61 Logging takes format params as a separate arg (commands.py) 2019-01-30 19:39:03 +00:00
jesopo
72072bbd3d Make sure to call the specific hook we've decided is valid (commands.py) 2019-01-30 19:35:43 +00:00
jesopo
8ac989fa96 check we have a channel_arg kwarg before parsing it as an int
(channel_access.py)
2019-01-30 19:20:11 +00:00
jesopo
0e66921d34 Break when we've found a suitable command hook (commands.py) 2019-01-30 19:15:11 +00:00
jesopo
b0d67e5170 Use correct arg indexes for private channelset (set.py) 2019-01-30 19:07:34 +00:00
jesopo
051e4347f9 Actually remove call to preprocess.command to after min_args check
(commands.py)
2019-01-30 11:41:25 +00:00
jesopo
f25bfd0ae2 Correctly check if we're in a channel command before checking if the current
hook is valid (commands.py)
2019-01-30 11:37:47 +00:00
jesopo
c822a1afd6 Check min_args before we check if a user has permission (commands.py) 2019-01-30 11:37:29 +00:00
jesopo
fc39f8f9fc We need to turn channel_arg in to an int (channel_access.py) 2019-01-30 11:28:38 +00:00
jesopo
fc4a8d8e34 We should be using potential_hook until we've decided on a valid hook
(commands.py)
2019-01-30 11:26:54 +00:00
jesopo
64d12e3415 Get all hooks when checking command hooks, not just the first (commands.py) 2019-01-30 11:23:17 +00:00
jesopo
8a832b7230 Check all hooks for a command and pick the first applicable one, to allow for
private_only and channel_only commands to share the same command string
(commands.py)
2019-01-30 11:20:14 +00:00
jesopo
b197a537f0 Add a private channelset command (set.py) 2019-01-30 11:16:42 +00:00
jesopo
2071a10180 Support a way to check user channel access in a private command
(channel_access.py)
2019-01-30 11:16:34 +00:00
jesopo
bb84fc0291 Add a permission to !channelunset and !channelget (set.py) 2019-01-30 08:10:41 +00:00
jesopo
9491a44295 Correctly compare current time and token expire time and actually cache the
token (spotify.py)
2019-01-29 22:46:00 +00:00
jesopo
d178938463 Typo, {,} instead of {:} made headers a set (spotify.py) 2019-01-29 22:40:44 +00:00
jesopo
a177c5050e URL_SPOTIFY was renamed to URL_SEARCH (spotify.py) 2019-01-29 22:39:58 +00:00
jesopo
74e8ad0351 Forgot to import time (spotify.py) 2019-01-29 22:39:13 +00:00
jesopo
8acc01dd48 post_data is the kwarg for POST data, not data (spotify.py) 2019-01-29 22:38:31 +00:00
jesopo
bb047ec1b7 base64.b64encode(...) takes a byte array, not a string (spotify.py) 2019-01-29 22:37:44 +00:00
jesopo
af7a765547 Forgot to import base64 (spotify.py) 2019-01-29 22:36:54 +00:00
jesopo
2d085e7f91 Spotify now requires access tokens to use it's API (spotify.py) 2019-01-29 22:34:28 +00:00
jesopo
0c319be1e5 Correct usage help for kickban/tempkickban (channel_op.py) 2019-01-29 17:37:14 +00:00
jesopo
5e91f0d209 Remove haveibeenpwned.py, it's 99% useless 2019-01-29 16:01:43 +00:00
jesopo
a501fdea1f Stop processing a command when we've decided the user doesn't have permission
(commands.py)
2019-01-29 15:38:04 +00:00
jesopo
249734ebef We don't have an event object in _has_channel_access (channel_access.py) 2019-01-29 15:35:38 +00:00
jesopo
e0722dfc8a Seperate out access checking logic so we can call across-modules with the event
system to check if users have specific channel access (channel_access.py)
2019-01-29 15:33:55 +00:00
jesopo
7937be5128 Don't double up command prefix in !usage output (commands.py) 2019-01-29 08:36:47 +00:00
jesopo
f97c1f02fd Actually show the command prefix we now pass to _get_usage (commands.py) 2019-01-29 08:33:32 +00:00
jesopo
79ff20b66a Show command prefix in usage strings (commands.py) 2019-01-29 08:32:22 +00:00
jesopo
5d47e7e895 Add a permission to !ghwebhook so an admin user can use it without +o (github) 2019-01-29 08:06:59 +00:00
jesopo
0564a173a3 Typo, 'acess' -> 'access' (channel_access.py) 2019-01-29 07:35:48 +00:00
jesopo
66b2ffee68 Support * as a channel permission, to give users all access
(channel_access.py)
2019-01-29 07:32:25 +00:00
jesopo
5e5a62044c We don't need a seperate command for !channelset override (set.py) 2019-01-29 07:18:03 +00:00
jesopo
08404c4694 Use new utils.consts.PERMISSION_FORCE_SUCCESS in permissions.py 2019-01-29 07:14:53 +00:00
jesopo
f9446a3663 Show an error when an unknown subcommand is given to !access (channel_access.py) 2019-01-29 00:14:33 +00:00
jesopo
10b2ace653 Add require_access to commands on channel_op.py 2019-01-29 00:08:21 +00:00
jesopo
a3a535b195 Delete a user's 'access' channel setting when they have no permissions left
(channel_access.py)
2019-01-29 00:02:56 +00:00
jesopo
1b933e7c00 IRCUser.User objects don't have .id, they have .get_id() (channel_access.py) 2019-01-29 00:00:15 +00:00
jesopo
549332db38 Check a return is truthy before we decide it's an error (command.py) 2019-01-28 23:57:12 +00:00
jesopo
ee1770cc08 Typo, force_success -> force_success = False (commands.py) 2019-01-28 23:52:30 +00:00
jesopo
a94d35f0f1 Add channel_access.py, to give permissions to users in a channel (similar to
chanserv)
2019-01-28 23:50:43 +00:00
jesopo
d10a6d94c1 Add a way to force success and force failure of a command permission check
(commands.py)
2019-01-28 23:29:52 +00:00
jesopo
5e12d87ca3 Use target (after prefixes lstrip) to get channel object (line_handler.py) 2019-01-27 22:43:35 +00:00
jesopo
16337fa16e We need to pass a str to lstrip, not an array (line_handler.py) 2019-01-27 22:40:29 +00:00
jesopo
1301e80621 Strip prefix_symbols from PRIVMSG target, for e.g. 'PRIVMSG +#chan :hi'
(line_handler.py)
2019-01-27 22:38:19 +00:00
jesopo
0bb2491399 The event fired when we get an account-notify message iss
`received.account.login`, not `received.account` (auto_mode.py)
2019-01-27 07:16:41 +00:00
jesopo
1e72c39fda Handle prefix being null when we've received a server notice (line_handler.py) 2019-01-26 19:39:49 +00:00
jesopo
3b17cbacea Set server name by event["prefix"].hoskmask not .nickname, they're the same
thing at the moment when it's not a `nick!user@host` but eventually it might not
be (line_handler.py)
2019-01-26 19:38:14 +00:00
jesopo
0d7b39e7d9 extended-join JOINs have 3 args, not 2 (line_handler.py) 2019-01-26 16:17:34 +00:00
jesopo
6affadd306 Pass category arg to _set_quotes in quote_add (quotes.py) 2019-01-26 16:06:15 +00:00
jesopo
f217c5d192 Quote should be saved with saver and timestamp (quotes.py) 2019-01-26 16:03:40 +00:00
jesopo
eb5c685128 Typo, 'quote' -> 'quotes' (quotes.py) 2019-01-26 16:01:17 +00:00
jesopo
6e4607ea8d _set_quotes needs to be given a category (quotes.py) 2019-01-26 15:57:07 +00:00
jesopo
5b4954a96c add !quotegrab to take the last message from a user and quote it (quotes.py) 2019-01-26 15:55:20 +00:00
jesopo
ed44e6f78b Use .lower() on nickname, as we're using that on s and nickname_lower uses
special irc casemapping (github)
2019-01-26 10:53:28 +00:00
jesopo
506aef6366 Actually use the output of _prevent_highlight (github) 2019-01-26 10:53:14 +00:00
jesopo
2d113011ed Add a setting to insert zero width characters in to highlights (github) 2019-01-26 10:49:31 +00:00
jesopo
e6aad7e070 Don't give event object to webhook functions - they don't need them 2019-01-26 10:33:45 +00:00
jesopo
eb3f4db828 Don't put channel messages as low priority, so we can still catch "bitbot: ++"
(karma.py)
2019-01-25 23:53:53 +00:00
jesopo
f86a852d55 Strip "," and ":" from karma targets (karma.py) 2019-01-25 23:45:44 +00:00
jesopo
3c6827850a Remove users from channels they're kicked from (line_handler.py) 2019-01-25 18:59:00 +00:00
jesopo
45f47bc3fc Prevent users partaking in the lottery if doing so would put their coin total
below the coin redemption amount (coins.py)
2019-01-25 16:04:10 +00:00
jesopo
d75e2452ce Delete nickname_aliases.py as it's been disabled for a very long time due to
bugs
2019-01-25 13:21:44 +00:00
jesopo
335f1545a8 Give StdOut.send the new method param (commands.py) 2019-01-25 07:11:45 +00:00
jesopo
7b3d7f85a6 I totally forgot that we don't need flask. at all. 2019-01-24 19:17:31 +00:00
jesopo
301dd7378a Add irc_lower() and irc_equals() to IRCServer.Server so that no where else
in the code has to know about the server having a casemapping
2019-01-24 17:12:50 +00:00
jesopo
5bfa0d2b50 'self._get_all_user_coins' -> 'self._get_user_coins', forgot to change this when
we moved back away from wallets (coins.py)
2019-01-24 11:27:57 +00:00
jesopo
8ba7cb0396 Move logging API key from INFO to DEBUG (rest_api.py) 2019-01-23 22:23:21 +00:00
jesopo
086629f2dc Logging shouldn't use % string formatting (rest_api.py) 2019-01-23 22:10:32 +00:00
jesopo
6fef7fd0c6 INFO log when we get a HTTP request with an API key (including the key's
comment) (rest_api.py)
2019-01-23 22:08:26 +00:00
jesopo
26603c23ac Also pass method to StdOut/StdErr Send() when a send.stdout or
`send.stderr` event is sent (commands.py)
2019-01-23 21:39:05 +00:00
jesopo
64cb723901 Move logic to get command-method out of Out object (commands.py) 2019-01-23 20:35:28 +00:00
jesopo
2c7c12e9e0 Typo, server.get_value -> server.get_setting (coins.py) 2019-01-23 11:26:01 +00:00
jesopo
756938a4c9 Use rpartition to either get the last part of a ref/head/branch ref or just
`branch` (github)
2019-01-23 08:56:36 +00:00
jesopo
fcbb530b9e Don't throw an exception when we get the kind of format of ref the create
event gives (only repo name, not `"refs/head/repo"`) (github)
2019-01-23 08:51:01 +00:00
jesopo
e45b72356c Disable coin interest by default (coins.py) 2019-01-23 08:47:14 +00:00
jesopo
96f6be087a Change another usage of coins when it should be all_coins (coins.py) 2019-01-23 08:23:09 +00:00
jesopo
c39f1e002f Fix coins name collision (coins.py) 2019-01-23 08:22:08 +00:00
jesopo
b456132318 Remove wallet and bank logic (coins.py) 2019-01-23 08:20:01 +00:00
jesopo
f4467ac0ed Log a WARN when we get a HTTPTimeoutException while we're trying to get a git.io
short url (github)
2019-01-22 22:06:25 +00:00
jesopo
8024e53a68 Don't show current event filters comma-separated as they're not comma separated
when we set them and that's a little confusing (github)
2019-01-22 20:52:57 +00:00
jesopo
815eea69bd Typo, had ")" closing an array instead of "]" (github) 2019-01-22 20:50:59 +00:00
jesopo
a27b567ae1 Support handling watch event (repo being stared - misleading event name i
know) (github)
2019-01-22 20:49:31 +00:00
jesopo
c69f4414a0 Handle a situation where a repo full name isn't provided and there isn't one set
as default (github)
2019-01-22 17:16:04 +00:00
jesopo
fc5671c7c5 We only need one '-' between tweet content and short url (tweets.py) 2019-01-21 19:36:25 +00:00
jesopo
0fd180a5c2 'EventResultError' -> 'EventsResultsError' typo (maybe this should actually be
named 'EventResultError') (youtube.py)
2019-01-21 19:32:37 +00:00
jesopo
65db982f1f Show a "failed to load results" error when a video_id search returns no results
(youtube.py)
2019-01-21 19:30:39 +00:00
jesopo
50349ab8c8 pr-all also shows when there are new commits to a pull request (github) 2019-01-21 17:25:13 +00:00
jesopo
381e0ae336 Error log failure to get title of a url (title.py) 2019-01-21 14:39:20 +00:00
jesopo
8bf8097dd7 bus_stop isnt a Response object (tfl.py) 2019-01-21 10:46:23 +00:00
jesopo
3cefe87c5e Show default github web hook event categories in ghwebhook.md (github) 2019-01-20 20:08:46 +00:00
jesopo
c6545ca847 Use the correct namespace for HTTPTimeoutException (wolframalpha) 2019-01-20 19:05:50 +00:00
jesopo
65f9184a54 Gracefully handle a timeout (wolframalpha) 2019-01-20 19:04:32 +00:00
jesopo
491db4fea4 Typo, '9)' -> '()' (github) 2019-01-20 13:03:36 +00:00
jesopo
7a7400922e Add !ghwebhook list to ghwebhook.md 2019-01-20 13:02:19 +00:00
jesopo
be772cb730 Add a !ghwebhook subcommand to list all registered web hooks (github) 2019-01-20 13:01:31 +00:00
jesopo
f9186d7334 typo, commit["pusher"] -> data["pusher"] (github) 2019-01-19 08:02:34 +00:00
jesopo
202991a268 use data["pusher"]["name"] as data["author"]["login"] doesn't exist (github) 2019-01-19 08:00:31 +00:00
jesopo
8c1b40e785 Clarify [hook] and add sections for branches subcommand (github) 2019-01-19 07:53:30 +00:00
jesopo
3835930bdb Allow users to specify what branches are shown for github webhooks (github) 2019-01-19 07:48:24 +00:00
jesopo
0f9592063e Show user login not user name (e.g. show username not display name) for
commits (github)
2019-01-19 07:23:35 +00:00
jesopo
1753329aaf Show an error when a user specifies an unknown subcommand to !ghwebhook (github) 2019-01-18 14:21:53 +00:00
jesopo
3d2c11991e Clarify wording of what can be in the list of shown events (github) 2019-01-18 14:12:29 +00:00
jesopo
d2b572849c Correct markdown url (github) 2019-01-18 14:04:06 +00:00
jesopo
1950f1335f Point out that users can use raw github events, not just event categories
(github)
2019-01-18 14:02:54 +00:00
jesopo
c7ba2b778b Delete github-hooks channel setting when it's empty (github) 2019-01-18 13:25:53 +00:00
jesopo
9bbf3147d0 Display event categories in a smaller font (ghwebhook.md) 2019-01-18 13:14:11 +00:00
jesopo
8c4c9ab90a Added help file for !ghwebhook 2019-01-18 13:13:01 +00:00
jesopo
69edf039b3 Support modules being in their own folder and move github.py to github/module.py 2019-01-18 12:49:11 +00:00
jesopo
b7864ffb41 Typo, 'all_hook' -> 'all_hooks' (github.py) 2019-01-18 12:13:01 +00:00
jesopo
0414ed34e2 Move github hooks away from !channelset in to their own !ghwebhook command
(github.py)
2019-01-18 12:05:56 +00:00
jesopo
8addca13ec Copypaste fail, 'c' -> 'category' 2019-01-18 08:20:03 +00:00
jesopo
be5c5e6c21 Allow non-category items to be placed in a channel's event categories, allowing
users to specify specific events (github.py)
2019-01-18 08:18:47 +00:00
jesopo
4981d70be4 combine github events and their actions to be able to filter by event type and
action. add/change event categories to use these (github.py)
2019-01-18 08:08:39 +00:00
jesopo
5dc5e3fbfd LIGHTGREEN -> GREEN for successful commands (commands.py) 2019-01-17 21:10:12 +00:00
jesopo
72d4375e55 Only show specific actions for pull requests and issues (github.py) 2019-01-17 17:01:12 +00:00
jesopo
776f2faced Actually use new sender arg for _on_notice() (print_activity.py) 2019-01-17 14:51:44 +00:00
jesopo
2a7df864ef ping events don't need to know full_name of repo (github.py) 2019-01-17 14:50:23 +00:00
jesopo
588b54b40b Print when we send notices (print_activity.py) 2019-01-17 14:50:07 +00:00
jesopo
89d0c83acb Clarify github webhook event names with some comments (github.py) 2019-01-17 14:31:23 +00:00
jesopo
ce1d1aa5f8 'issue' -> 'issues' (github.py) 2019-01-17 14:19:31 +00:00
jesopo
75b85e76c9 Add a channel setting for github webhook event filters (github.py) 2019-01-16 22:36:19 +00:00
jesopo
5bf603bbfa typo, 'respository' -> 'repository' (github.py) 2019-01-16 22:32:17 +00:00
jesopo
77c7084e9d Don't try to parse username and repo name from a full name if there's no full
name (github.py)
2019-01-16 22:28:12 +00:00
jesopo
a342f82f40 Do filtering of github events based on categories of events (github.py) 2019-01-16 22:26:31 +00:00
jesopo
f9bf1d03e8 Correct order of string formatting for github membership events (github.py) 2019-01-16 22:14:26 +00:00
jesopo
f50f2a6d51 Support organisation membership event (github.py) 2019-01-16 22:13:38 +00:00
jesopo
e49389232e Support github events only related to an organisation, not a repo (github.py) 2019-01-16 22:13:14 +00:00
jesopo
8e5642f5d7 Check if page is null before trying to access page.data (eval_python.py) 2019-01-15 12:39:27 +00:00
jesopo
3eb87b06e1 'guid' -> 'uuid' as apparently guid is microsoft's name for a uuid
(random_number.py)
2019-01-14 21:37:14 +00:00
jesopo
7e85197d47 Change !gh to be an alias of !github (github.py) 2019-01-13 22:06:41 +00:00
jesopo
598fcb80b9 'to_ansi_colors(' -> 'parse_format(' as it's become a lot more than just colors.
strip \x08 (in case hexchat users paste it) (print_activity.py, src.utils.irc)
2019-01-13 21:56:36 +00:00
jesopo
9ab9400b46 Only show issue comment edit events when the body text of the comment has
actually changed (github.py)
2019-01-13 01:34:07 +00:00
jesopo
e523671633 Made positive karma show as LIGHTGREEN, not GREEN (karma.py) 2019-01-11 21:00:09 +00:00
jesopo
eadb49d41a Don't use bolding for command colors (commands.py) 2019-01-11 20:57:52 +00:00
jesopo
3cc9bc9dbb Karma is now being used as karma_str, thus we need a %s not a %d (karma.py) 2019-01-11 17:35:18 +00:00
jesopo
415afe7e27 Show positive karma as green and negative karma as red (karma.py) 2019-01-11 17:33:43 +00:00
jesopo
e5a5241615 Only try to regex match a youtube url if we actually have a search string
(youtube.py)
2019-01-11 12:03:23 +00:00
jesopo
59094568e0 Add youtube-safesearch channel setting, to allow channels to opt-in to turning
off any safe search filters (youtube.py)
2019-01-11 11:30:29 +00:00
jesopo
e62b3b58f4 "set" -> "channelset" for channel-related unset (set.py) 2019-01-10 22:43:12 +00:00
jesopo
0e9d2b3180 Add !unset and !channelunset (and !channelunsetoverride) (set.py) 2019-01-10 22:41:35 +00:00
jesopo
2f74100666 Don't have duplicate repo full name in ping events (github.py) 2019-01-10 22:24:04 +00:00
jesopo
cbc0e81fb3 Send a notice to a channel when a new webhook registration is received
(github.py)
2019-01-10 22:14:40 +00:00
jesopo
73392e8a20 Pass username, repository, number to _gh_issue and _gh_pull (github.py) 2019-01-10 13:36:13 +00:00
jesopo
2d346e73bc Seperate out issue/pr logic into their own functions and add !gh that will get
info on either an issue or a pull request (github.py)
2019-01-10 13:32:19 +00:00
jesopo
8da6036894 Show issue/pr state in !ghissue and !ghpull (github.py) 2019-01-10 13:23:32 +00:00
jesopo
d26a945c49 Show an error if !ghissue or !ghpull doesn't find the specified issue/pr
(github.py)
2019-01-10 13:18:58 +00:00
jesopo
86810290f7 rpartition (instead of partition) #number for github issues/pull, so that we
don't have to specify "#" when we're got a default repo (github.py)
2019-01-10 13:11:35 +00:00
jesopo
55b61649f4 copypaste fail, event["args_split"][0] -> ref (github.py) 2019-01-09 23:03:34 +00:00
jesopo
bba5733736 Command events don't have "channel", they have "target" (github.py) 2019-01-09 23:02:39 +00:00
jesopo
5514c2b9c9 Add a way to set the default github repo for a channel (github.py) 2019-01-09 23:01:27 +00:00
jesopo
470f9fc945 from_repo/to_repo -> repo_from/repo_to (github.py) 2019-01-09 22:51:55 +00:00
jesopo
2afe2d1c57 Show which branch is being merged in to which (github.py) 2019-01-09 22:50:41 +00:00
jesopo
d6da46fac3 to_from -> repo_to (github.py) 2019-01-09 22:50:21 +00:00
jesopo
8399545fe3 Add missing "(" for github pull request message format (github.py) 2019-01-09 22:47:47 +00:00
jesopo
aa04071d89 def github( -> def webhook( (github.py) 2019-01-09 22:47:20 +00:00
jesopo
dc4c711fa0 Actually show deletions as deletions for github pull requests (github.py) 2019-01-09 22:46:57 +00:00
jesopo
8d3064d50c Add !ghpull, to get information on a pull request from github (github.py) 2019-01-09 22:45:33 +00:00
jesopo
56f431176c Boldify sender on a pull request review comment (github.py) 2019-01-09 22:33:02 +00:00
jesopo
ac3c361399 Add !ghissue, to get information on an issue from github (github.py) 2019-01-09 22:30:11 +00:00
jesopo
93336efd38 Handle !soundcloud returning no results (soundcloud.py) 2019-01-08 10:14:21 +00:00
jesopo
38b7a1dadf Typo in words.py: 'strippped_word' -> 'stripped_word' 2019-01-04 12:36:38 +00:00
jesopo
8171c5c492 Allow tracking words that have characters deemed as "start"/"end" characters
(words.py)
2019-01-04 12:13:36 +00:00
jesopo
47b17def99 Sort list of available settings for set/channelset/etc (set.py) 2019-01-03 22:02:51 +00:00
jesopo
e15c7ece5b URL-unquote form-encoded data AFTER parsing it as a query string (github.py) 2019-01-03 21:55:21 +00:00
jesopo
498352d1ac Support adding github webhooks for an entire "username" (github.py) 2019-01-03 21:18:40 +00:00
jesopo
cb3e40a462 Print a topic's set at time when we receive a 333 (print_activity.py) 2019-01-02 13:39:49 +00:00
jesopo
3d60d59510 We need to normalise between a single usage string and multiple (making both
lists) to reuse the formatting code (commands.py)
2018-12-29 21:38:03 +00:00
jesopo
ee8d3a6287 Remove an erroneous level of indentation that prevented the command being
prepended to a usage string when only 1 usage string was available (commands.py)
2018-12-29 21:35:06 +00:00
jesopo
e8b69b0a26 type should be before number in the string formatting of issue_comment
(github.py)
2018-12-29 21:15:50 +00:00
jesopo
5f994e599d Show issue/pr number (github.py) 2018-12-29 19:05:14 +00:00
jesopo
d91e15abfd html unescape tweet text 2018-12-27 21:57:33 +00:00
jesopo
30db81e0da --require-config shouldn't have a space before it 2018-12-27 21:57:24 +00:00
jesopo
b8b0adb811 Sort nicknames case-insensitively (stats.py) 2018-12-26 23:24:43 +00:00
jesopo
e5600a6927 Sort user nicknames on /api/server (stats.py) 2018-12-26 23:22:12 +00:00
jesopo
f0ee00da3a Typo, '==' -> '=' 2018-12-22 09:36:13 +00:00
jesopo
7223e76e24 Copypaste fail from moving logic out to turn a date to a string ('value' -> 'dt)
(badges.py)
2018-12-22 09:35:11 +00:00
jesopo
13cf49ac5d Add !upsertbadge, to update or add a badge with a date (badges.py) 2018-12-22 09:34:38 +00:00
jesopo
6c38f2f637 Better clarify !updatebadge's <date> arg in usage (badges.py) 2018-12-22 09:33:52 +00:00
jesopo
43361961bb Move out logic to case-insensitively find a badge (badges.py) 2018-12-22 09:33:23 +00:00
jesopo
bd8ca2083b Typo, 'aliase' -> 'aliases' (commands.py) 2018-12-22 01:06:42 +00:00
jesopo
be1d06796b Add !removealias (commands.py) 2018-12-22 01:05:47 +00:00
jesopo
3039119f4a Actually set new args_split (commands.py) 2018-12-22 01:02:55 +00:00
jesopo
ae5eb9fc47 .partition returns a tuple of 3 (commands.py) 2018-12-22 01:01:25 +00:00
jesopo
498c1d647e Add basics of a command alias system 2018-12-22 01:00:38 +00:00
jesopo
44d2455766 This regex should have been r"" (commands.py) 2018-12-22 00:49:00 +00:00
jesopo
da42963e5c Add help and usage (badges.py) 2018-12-22 00:36:43 +00:00
jesopo
d2770c9642 Show actual date (not just days since) for !badge (badges.py) 2018-12-22 00:10:44 +00:00
jesopo
c2cc4fbd61 Show badges as "[badge] on day [count]" (badges.py) 2018-12-21 10:01:28 +00:00
jesopo
af70a28a45 'recevied' -> 'received' (timer.py) 2018-12-20 23:55:45 +00:00
jesopo
fe197b97ea Added timer.py 2018-12-20 23:54:35 +00:00
Evelyn
0c0e8c6b89 NR: list only called/total full count for service 2018-12-20 23:53:40 +00:00
Evelyn
aaca9dc4a6 Quit: We're getting there 2018-12-20 23:45:30 +00:00
jesopo
be7ae375ca Check that a user is updating an existing badge (badges.py) 2018-12-20 21:10:41 +00:00
jesopo
ebc835e6d5 'found_Badge' -> 'found_badge' (badges.py) 2018-12-20 21:05:47 +00:00
jesopo
20819a2478 Forgot to define now in !addbadge (badges.py) 2018-12-20 21:04:45 +00:00
jesopo
9547c116f1 Added !badge (badges.py) 2018-12-20 21:03:21 +00:00
jesopo
fa86ba8827 Always show badge names with the original capitalisation (badges.py) 2018-12-20 21:03:04 +00:00
jesopo
f1e72d4b4e Actually hook in to !removebadge (badges.py) 2018-12-20 20:51:03 +00:00
jesopo
a837ac3add Actually give badge name with update success message (badges.py) 2018-12-20 20:49:51 +00:00
jesopo
24ea68d150 Tell a user when a badge was successfully updated (badges.py) 2018-12-20 20:49:24 +00:00
jesopo
e010d21e4c year/month/day should be an int (badges.py) 2018-12-20 20:48:28 +00:00
jesopo
a43c5ef1f3 actually hook in to command for !resetbadge, format datetime to string before
putting it in a setting in reset_badge (badges.py)
2018-12-20 20:46:45 +00:00
jesopo
dbee856c4d Add !updatebadge to manually set a date on a badge (badges.py) 2018-12-20 20:46:18 +00:00
jesopo
03a3bdd73d Show "day"/"days" alongside day count 2018-12-20 20:30:23 +00:00
jesopo
ba3c1673ad now is already a datetime.date (badges.py) 2018-12-20 20:28:26 +00:00
jesopo
2e032bcc09 round up the current day when checking days since badge was created (badge.py) 2018-12-20 20:26:42 +00:00
jesopo
6d51473a73 Compare .date() when checking days between datetimes (badges.py) 2018-12-20 16:34:21 +00:00
jesopo
568eff01e0 typo in badges.py, 'datettime' -> 'datetime' 2018-12-20 16:32:04 +00:00
jesopo
f98797cd23 to iterate by key,value we need to .items() on dict (badges.py) 2018-12-20 16:31:04 +00:00
jesopo
0f37455665 strf datetime before saving it in settings (badges.py) 2018-12-20 16:30:15 +00:00
jesopo
751c93d59c 'isonow' -> 'utcnow' 2018-12-20 16:29:19 +00:00
jesopo
2a84e18b2e first commit of badge system 2018-12-20 16:28:14 +00:00
jesopo
41d680dad7 We should be checking if a channel name is in server.channels, not server 2018-12-19 21:43:10 +00:00
jesopo
8d8ebf7d55 Show sender of a pull request comment action, not the comment's user, for
when people edit other people's comments
2018-12-19 16:52:04 +00:00
Evelyn
aea215a647 NR: DEM is technically a permitted powertype 2018-12-18 20:30:10 +00:00
Evelyn
45fe512457 NR: fix regression introduced by HTTP util changes 2018-12-17 09:24:18 +00:00
jesopo
28900c2ff9 Correctly handle a 404 in thesaurus.py 2018-12-16 11:03:36 +00:00
jesopo
00ac4d208a Channels are 'target' in command events 2018-12-15 22:57:38 +00:00
jesopo
179cb40163 Add missing .data on a utils.http.request Response object (define.py) 2018-12-15 22:56:04 +00:00
jesopo
9658d0285e Support turning safe search on/off in google.py 2018-12-15 22:53:27 +00:00
jesopo
1ffc7863a0 If a request to git.io times out, fall back to full url 2018-12-14 08:49:37 +00:00
jesopo
d2fe95e0cc Fix missing change to new Response objects from utils.http.request (youtube.py) 2018-12-12 13:28:54 +00:00
jesopo
98ae6993e4 Typo, 'requestl' -> 'request' (wolframalpha.py) 2018-12-12 11:16:45 +00:00
jesopo
843d517553 'utils.http.get_url' -> 'utils.http.request' (github.py) 2018-12-11 22:40:20 +00:00
jesopo
c0002f4f09 Re-add accidentally removed ":" in trakt.py 2018-12-11 22:27:58 +00:00
jesopo
22c38ad083 Shorten github urls in github.py 2018-12-11 22:27:04 +00:00
jesopo
793d234a0b 'utils.http.get_url' -> 'utils.http.request', return a Response object from
utils.http.request
2018-12-11 22:26:38 +00:00
jesopo
a41cf7b471 Actually use action_desc in github.py.issues, so that we can see what things
are labeled as
2018-12-10 21:07:38 +00:00
jesopo
d0caebbc57 Support fork event (github.py) 2018-12-10 18:47:54 +00:00
jesopo
b696e4e818 Add basics of status event handling, mostly for use with continuous integration (github.py) 2018-12-10 17:17:40 +00:00
jesopo
a3a88d4589 Use more distinctive arrow characters for youtube up/down votes 2018-12-09 21:02:58 +00:00
jesopo
6dc58d4ceb Correctly support labeling pull requests, support unlabeling pull requests and support both on issues 2018-12-09 20:57:29 +00:00
jesopo
de60d245b5 Show newly added labels when a pull request is labeled 2018-12-09 19:36:23 +00:00
jesopo
8cc1168589 Return empty string on successful github webhook handling, not True 2018-12-08 09:10:44 +00:00
jesopo
9bef4b7df1 Switch to using a case insensitive dictionary for headers instead of doing
.title() on each header key
2018-12-08 09:00:12 +00:00
jesopo
281923a463 Check whether we actually have a httpd running when unloading rest_api.py 2018-12-08 08:56:47 +00:00
jesopo
476e4cc9c1 ["review"]["user"]["login"] -> ["sender"]["login"] to show who created a
pull_request_review event, not who started the review
2018-12-06 18:35:46 +00:00
jesopo
3e0bd3ee85 Add 'bot-channel' config in bot.conf.example and use it, if present, in
bot_channel.py
2018-12-06 12:13:59 +00:00
jesopo
7d59898485 'X-GitHub-Event' -> 'X-Github-Event' now that we .title() header keys
(github.py)
2018-12-06 12:09:58 +00:00
jesopo
9918a72f80 .items() on self.headers, to correctly use it for a dict comprehension
(rest_api.py)
2018-12-06 12:03:58 +00:00
jesopo
786e8b89a3 'content-type' -> 'Content-Type' (github.py) 2018-12-06 12:01:23 +00:00
jesopo
e6b0d4d167 .title() all header keys (rest_api.py) 2018-12-06 12:00:45 +00:00
jesopo
809efc6793 Only pop MODE args when we're certain we should (pays more attention to
CHANMODES ISUPPORT)
2018-12-06 08:26:07 +00:00
jesopo
dd0c5093a0 Remove telegram functionality - it's very broken/outdated and needs a
complete rewrite
2018-12-05 15:53:49 +00:00
jesopo
a8cb500784 utils.irc.lower channel names when adding them to the autojoin list 2018-12-05 15:46:51 +00:00
jesopo
764e1e3245 Prevent setting values to array settings and prevent adding to non-array
settings
2018-12-05 12:13:29 +00:00
jesopo
08a74d8b4d Don't try to call .isdigit() on an int object in coin.py.lottery_buy 2018-12-05 11:28:44 +00:00
jesopo
351a88bda6 Only gracefully handle SIGINT once 2018-12-03 19:46:15 +00:00
jesopo
48eeb11554 Remove use of print() in modules/line_handler.py 2018-12-02 09:46:57 +00:00
jesopo
92f255e9be typo in modules.py, '_reload' -> 'self._reload' 2018-12-02 09:19:03 +00:00
jesopo
389366ce5d Take a name param in modules.py._catch 2018-12-02 09:18:24 +00:00
jesopo
da81b20c01 Correctly return errors for load/unload, not just reload (modules.py) 2018-12-02 09:16:17 +00:00
jesopo
d1bbd8cfe3 Add missing urllib.parse import (github.py) 2018-11-30 21:54:51 +00:00
jesopo
fcc3bdda6b Support form-encoded github webhook data 2018-11-30 21:53:47 +00:00
jesopo
35108efc5f rest_api.py's '_safe_handle' function isn't used and doesn't need to be used now
that API calls are thrown straight on to the main thread
2018-11-30 21:39:28 +00:00
jesopo
aab84096fd utf8-decode github webhook json data 2018-11-30 21:09:59 +00:00
jesopo
6724ef94e5 Make coins.py compatible with versions of python under 3.6 2018-11-30 20:38:03 +00:00
jesopo
4ae7d3fbab Show who invited who when printing and invite (print_activity.py) 2018-11-27 17:36:22 +00:00
jesopo
6077d06c99 Copypaste fail, 'target_channel' -> 'event["target_channel"]'
(print_activity.py)
2018-11-27 17:34:10 +00:00
jesopo
e47edbddfb Print when we receive and INVITE 2018-11-27 17:33:24 +00:00
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