Commit graph

3085 commits

Author SHA1 Message Date
Noah Pederson
f70e46a198 Improves sentence processing for karma
Changes the matching regex to grab arbitrary text between ()
for giving (or taking away) karma. Still supports single words
followed by ++/--, including usernames, and strips "," or ":"
characters from the end if a single-word match.

ex. (some sentence to give karma to)++ -> "[Karma] some sentence to give
karma to now has 1 karma"

ex. ngp:++ -> "[Karma] ngp now has 200 karma"
2019-09-26 05:50:10 -05:00
jesopo
fb4018dd4f push markov lines down command.regex so ignored users are missed 2019-09-25 18:12:49 +01:00
jesopo
c6efea3971 non-CWed pleroma posts have content as "", not null 2019-09-25 17:12:55 +01:00
jesopo
6199086dc5 pleroma outbox items don't have an inReplyTo when it's null 2019-09-25 17:11:16 +01:00
jesopo
67cd14da5a only fist first_item once 2019-09-25 16:14:48 +01:00
jesopo
5923602f0a make fediverse module rely on REST API
I didn't want to do this unless we had to but Mastodon is introducing requirming
signed requests soon, so even if a user doesn't use bitbot as an instance, we'll
still need to be able to serve Actor (and key) over the REST API
2019-09-25 16:11:57 +01:00
jesopo
13b21b205d only show non-replies with ,fedi 2019-09-25 16:11:18 +01:00
jesopo
c2e48c858e allow channels to specify quotes should be per-channel 2019-09-25 15:12:52 +01:00
jesopo
d8ad79c153 request tweet stream as tweet_mode="extended" 2019-09-25 15:03:43 +01:00
jesopo
25ec351d4d show alias of disconnected server when it's a cancelled timer 2019-09-25 12:33:12 +01:00
jesopo
3fa71a75af serve pub key, not cert 2019-09-25 10:43:39 +01:00
jesopo
b18586ba51 don't .strip() tls cert 2019-09-25 10:32:54 +01:00
jesopo
e2ec8afbea _ap_url already array-ifies 2019-09-25 10:17:56 +01:00
jesopo
0e5b14fb47 reference mask_split, not s 2019-09-24 15:57:23 +01:00
jesopo
9c591ca8dc don't throw when account name is null 2019-09-24 15:52:31 +01:00
jesopo
70bc244864 switch ban-format-account from a serverset to channelset 2019-09-24 15:50:54 +01:00
jesopo
682914dce1 support having a separate ban format for users with accounts 2019-09-24 15:47:33 +01:00
jesopo
f59b161fbd use ban-format for mute masks 2019-09-24 15:39:31 +01:00
jesopo
7549c0f998 support "$$" as "$" in ban-format 2019-09-24 15:27:35 +01:00
jesopo
5b82193f3b support $a (account) in ban-mask setting 2019-09-24 15:25:33 +01:00
jesopo
9297ffbadc .lstrip("-") from unset setting name 2019-09-24 14:48:01 +01:00
jesopo
8d3a35e740 'ref' doesn't always come in "a/b/c" format for Gitea 2019-09-24 13:00:08 +01:00
jesopo
195381d2e5 utf8-decode translation data 2019-09-24 12:47:16 +01:00
jesopo
8618f43b34 don't favourite starting words when first_word is provided 2019-09-24 10:55:18 +01:00
jesopo
5ea714182d support first-word argument to !markovfor 2019-09-24 10:51:25 +01:00
jesopo
6669926746 support first_word with no found second_word
useful for "!markov <word>" so that "<word>" can be mid-chain
2019-09-23 16:47:11 +01:00
jesopo
7656fb9b51 'start' -> 'first_word' 2019-09-23 16:13:50 +01:00
jesopo
c253d17f54 allow an arg to !markov to chose the first word 2019-09-23 11:39:43 +01:00
jesopo
bb2590734b add missing "import urllib.parse" to ap_utils.py 2019-09-23 11:28:14 +01:00
jesopo
6ee9bcc51f add default value of self._load_thread 2019-09-23 10:41:01 +01:00
jesopo
28cdf05a47 push markov loading half on to a background thread that takes the main thread
for database actions
2019-09-23 10:24:03 +01:00
jesopo
964730e758 add success message, decode http get response 2019-09-23 10:06:04 +01:00
jesopo
e448a4abb8 add command for loading logs in to markov (via http) 2019-09-23 10:03:32 +01:00
jesopo
72ff24227d we only need 1 level of "end" markov chains 2019-09-20 18:52:52 +01:00
jesopo
781b6bf525 copypaste fail, duplicate "markov" command hook 2019-09-20 18:09:26 +01:00
jesopo
3dfee55d42 add !markovfor 2019-09-20 18:08:22 +01:00
jesopo
c2e3fa4e80 .lower() markov words 2019-09-20 17:48:18 +01:00
jesopo
0e9a8d66a7 getting frequency on-insert should be execute_fetchone 2019-09-20 17:21:18 +01:00
jesopo
fa405df36a remove debug print 2019-09-20 17:19:12 +01:00
jesopo
81cf1ab58f add a command to generate markov chains (!markov) 2019-09-20 17:18:47 +01:00
jesopo
4ccd3084ed '_on_load' -> 'on_load' 2019-09-20 17:15:21 +01:00
jesopo
532d1687c3 database.execute() doesn't fetch data 2019-09-20 17:12:17 +01:00
jesopo
ecf48aa33e generate() takes a channel id, not a channel 2019-09-20 17:07:48 +01:00
jesopo
72fca2eacb add missing ")" in CREATE query 2019-09-20 16:58:42 +01:00
jesopo
f24f58ecd0 'self.database' -> 'self.bot.database' 2019-09-20 16:57:17 +01:00
jesopo
909ba10263 first draft of markov.py 2019-09-20 16:56:00 +01:00
jesopo
3d3b990ff6 only show auto-title when response code is 200 2019-09-20 15:56:14 +01:00
jesopo
cf988c600d 'to' -> 'so', typo in !cfilter comment 2019-09-20 14:57:24 +01:00
jesopo
ebcae169c7 remove redundant old docstring kwargs from !silence 2019-09-20 14:55:19 +01:00
jesopo
47d38c7d18 refactor all checks for channel_type to server.is_channel() 2019-09-20 14:52:41 +01:00
jesopo
95a22f53f2 improve !ud usage string (wrt #number) 2019-09-20 14:19:06 +01:00
jesopo
c488fb2a82 change !ud index syntax and put it in help text 2019-09-20 14:11:09 +01:00
jesopo
208eb9cd47 move where optional for_str is inserted 2019-09-20 13:39:33 +01:00
jesopo
956cc86072 'path' is now 'args' 2019-09-20 13:34:55 +01:00
jesopo
8a3e480ef5 bitbot is a Service (bot), not a Person 2019-09-20 11:44:23 +01:00
jesopo
04d75ec414 make a better "random ID url" function 2019-09-20 11:39:46 +01:00
jesopo
51b8429278 make Accept ID (and Follow ID) our own domain 2019-09-20 10:53:58 +01:00
jesopo
1fac9135fb 'path' -> 'args' on REST API events 2019-09-20 10:48:24 +01:00
jesopo
d75d751295 update _ap_*_url() functions to use path-args 2019-09-20 10:46:49 +01:00
jesopo
691fdf8978 add missing ")" 2019-09-20 10:43:23 +01:00
jesopo
1b3ee8e336 use path-arg variables for AP urls, not get params 2019-09-20 10:42:08 +01:00
jesopo
cf65614832 support path-arg variables in url_for 2019-09-20 10:41:52 +01:00
jesopo
744a384c47 use source Hostmask from multiline batch 2019-09-19 18:16:23 +01:00
jesopo
efc0e197e5 Allow passing source Hostmask to IRCBatch 2019-09-19 18:16:10 +01:00
jesopo
c7409c91be add missing IRCLine import 2019-09-19 16:24:53 +01:00
jesopo
8e9fba0f96 'bitbot.dev/multiline' -> 'draft/multiline' 2019-09-19 15:48:16 +01:00
jesopo
8f38223284 fedi http headers should be PascalCase 2019-09-19 15:28:58 +01:00
jesopo
957a222f96 actually pass Request objects to utils.http.request_many() from rss.py 2019-09-19 15:04:50 +01:00
jesopo
88a69aaa66 give Requests, use them in utils.http.request_many() 2019-09-19 14:54:44 +01:00
jesopo
9d846d10e2 append "CVE-" to CVE ids without it 2019-09-18 17:51:08 +01:00
jesopo
9ec81f8c8a move check_urls.py to bitbot-modules 2019-09-18 17:49:24 +01:00
jesopo
31607def4e move botsnack to bitbot-modules 2019-09-18 17:48:23 +01:00
jesopo
9a152541f1 move timer.py to bitbot-modules 2019-09-18 17:46:52 +01:00
jesopo
81f6715d7d move slowvoice.py to bitbot-modules 2019-09-18 17:45:58 +01:00
jesopo
d5b9da7659 don't use JOIN/QUIT as !seen events (netsplits cause these) 2019-09-18 11:43:59 +01:00
jesopo
ea1698499f through error when fediverse server is configured but crypto is missing 2019-09-18 10:18:49 +01:00
jesopo
9d4830dd88 first is now a Response object, not a dict 2019-09-17 18:05:39 +01:00
jesopo
14d28d836b 'responsedata' -> 'response.data' 2019-09-17 18:04:52 +01:00
jesopo
770c28da55 allow "!config #channel" for channels other than the current one 2019-09-17 17:56:56 +01:00
jesopo
441a58125a Show error when actor.load() fails 2019-09-17 17:41:40 +01:00
jesopo
f84b48adbe pass full Response from ap_utils.activity_request, use it for Actor 404 2019-09-17 17:41:15 +01:00
jesopo
ebe772a5a9 be explicit when a command has no help available 2019-09-17 16:27:35 +01:00
jesopo
0de4688540 add !myaccount 2019-09-17 15:15:54 +01:00
jesopo
b362e7d760 if a word is known as a nickname but the user has no location, treat as location 2019-09-17 15:06:13 +01:00
jesopo
92840f67ee don't die when channel.topic_setter is null 2019-09-17 14:14:30 +01:00
jesopo
f2f09bf0ca 'srt' -> 'str'
closes #152
2019-09-17 12:23:05 +01:00
jesopo
141b326d5a allow per-server default mumble servers
closes #151
2019-09-17 10:58:02 +01:00
jesopo
e77124604c hide hidden channels from "!channels" when not pm and not current channel
closes #150
2019-09-17 10:54:07 +01:00
jesopo
a04a29aa2c add per-channel default mumble server
closes #151
2019-09-17 10:45:11 +01:00
jesopo
89289065a9 suggest "!config <nickname> <setting> <value>" when settings are missing 2019-09-17 10:31:28 +01:00
jesopo
c8133e7847 treat config target "*" as current channel or current user in PM 2019-09-17 10:25:42 +01:00
jesopo
cf0a81d2e5 permit '!config #channel <setting>' and '!config own_nick <setting>' 2019-09-17 10:21:48 +01:00
jesopo
334d580c57 'seperate_hostmask()' -> 'parse_hostmask()' 2019-09-16 18:43:57 +01:00
jesopo
4ccfd821c8 update channel.topic_setter-related code 2019-09-16 18:41:47 +01:00
jesopo
03892d0ae3 topic_setter should be stored as a Hostmask 2019-09-16 18:38:46 +01:00
jesopo
7e67b07ada add !channels
closes #147
2019-09-16 16:05:36 +01:00
jesopo
6959bba5f3 move getting private_key/our_actor to __init__ (for main thread) 2019-09-16 15:49:03 +01:00
jesopo
6929ff0664 add strip_otr.py
closes #148
2019-09-16 15:29:09 +01:00
jesopo
fa33a927b1 url_for was moved to _module._url_for 2019-09-16 15:05:14 +01:00
jesopo
ea47c81ece expose url-for logic on Exports too 2019-09-16 14:55:29 +01:00
jesopo
ec4501c018 pass exports to ap_server.py 2019-09-16 14:23:06 +01:00
jesopo
f12551532f 'theading' -> 'threading' 2019-09-16 14:19:52 +01:00
jesopo
69032ea476 push inbox POSTs on to a background thread 2019-09-16 14:18:58 +01:00
jesopo
cc65892586 Revert "push inbox PUSHes on to background thread"
This reverts commit 18613311f9.
2019-09-16 13:58:13 +01:00
jesopo
18613311f9 push inbox PUSHes on to background thread 2019-09-16 13:54:07 +01:00
jesopo
f88b054f38 add !crate in rust.py 2019-09-16 12:11:03 +01:00
jesopo
d6960865d6 eval_rust.py -> rust.py 2019-09-16 12:02:35 +01:00
jesopo
cefbbe7c5f return content warning from ap_utils.format_note and show it
closes #118
2019-09-16 11:10:49 +01:00
jesopo
050bf0a848 use json_body=True for ActivityPub requests 2019-09-16 10:57:46 +01:00
jesopo
9d17710d6d PKCS1v15 is a function 2019-09-16 10:53:10 +01:00
jesopo
55d5692856 refactor AP Note stringifying out to ap_utils.py 2019-09-16 10:51:59 +01:00
jesopo
b8adb6f52d [:1] -> [:-1] 2019-09-15 22:52:20 +01:00
jesopo
52a7bf400f '[1:]' -> '[:1]' 2019-09-15 22:50:55 +01:00
jesopo
4ed8906075 strip ":" from "nick: ++" 2019-09-15 22:49:43 +01:00
jesopo
30ead4dcb6 parse "nick: ++" as "nick++" 2019-09-15 22:47:50 +01:00
jesopo
21fa2120df support "0" kickrejoin delay without creating a timer 2019-09-15 22:22:41 +01:00
jesopo
621fb0b396 event["channel"] -> event["target"] 2019-09-15 21:31:31 +01:00
jesopo
32a9a39e88 'hooked_repos_lowers' -> 'hooked_repos_lower' 2019-09-15 19:59:40 +01:00
jesopo
f8d24bc422 throw on_start() exceptions when tls key/certificate are not present 2019-09-15 17:11:45 +01:00
jesopo
5800fef4c9 use PKCS1v15 for HTTP signatures 2019-09-15 16:31:53 +01:00
jesopo
433e3cdcfb data -> post_data 2019-09-15 15:21:26 +01:00
jesopo
4f1f65919d dict()ify inbox headers 2019-09-15 14:31:36 +01:00
jesopo
ca68b27ccd actually pass signature and related headers to activity_request() 2019-09-15 14:27:34 +01:00
jesopo
06acbcfb98 readd accidentally lost ")" 2019-09-15 12:23:19 +01:00
jesopo
b22ab564be actually use method arg on activity_request() 2019-09-15 12:18:03 +01:00
jesopo
980a407ebb change follow accept/followback logic to involve our own actor 2019-09-15 12:17:24 +01:00
jesopo
4b42549b55 don't pass actor to Inbox ctor but pass sending actor to .send 2019-09-15 12:15:58 +01:00
jesopo
4caef45299 add missing uuid import to ap_server.py 2019-09-15 11:58:24 +01:00
jesopo
7c6f5c51d3 pass Actor to Inbox 2019-09-15 11:57:42 +01:00
jesopo
676bb53f43 'ap_utils.request' -> 'ap_utils.activity_request'. dont pass privkey 2019-09-15 11:56:03 +01:00
jesopo
f5ab4f690a pass whole PrivateKey object to ap_security, not just the key 2019-09-15 11:54:07 +01:00
jesopo
7a1eee7990 'security' -> 'ap_security' 2019-09-15 11:53:01 +01:00
jesopo
665a7a8d1a key_id -> key.id, missing urllib import 2019-09-15 11:51:51 +01:00
jesopo
95d67199ff Inbox.send should have a self param 2019-09-15 11:49:53 +01:00
jesopo
863ce32cda load user inbox before trying to access it 2019-09-15 11:48:58 +01:00
jesopo
c612bb8a15 Revert "Revert "open private key as a bytestring""
This reverts commit 97afbc1e40.
2019-09-15 11:48:01 +01:00
jesopo
13072f53a7 load tls-key, not tls-certificate 2019-09-15 11:47:22 +01:00
jesopo
97afbc1e40 Revert "open private key as a bytestring"
This reverts commit 07e73a534e.
2019-09-15 11:47:16 +01:00
jesopo
07e73a534e open private key as a bytestring 2019-09-15 11:46:12 +01:00
jesopo
223c04b1a5 why would we be getting the *filename* from security.private_key()? 2019-09-15 11:44:27 +01:00
jesopo
9a7e2fabda url_for does not exist in _private_key() 2019-09-15 11:43:04 +01:00
jesopo
3b5feaf2d7 missing json import 2019-09-15 11:41:27 +01:00
jesopo
4fb538f486 allow configuring REST API Host, have default public and local ports 2019-09-15 11:37:32 +01:00
jesopo
769d4e1a28 _ap_self_url no longer takes a username param 2019-09-15 11:24:59 +01:00
jesopo
13b25dc55d 'consts' -> 'ap_utils' 2019-09-15 11:24:00 +01:00
jesopo
89072de213 ap_server needs ap_utils import, pass bot instance to it too 2019-09-15 11:19:50 +01:00
jesopo
52a1b885ae temp remove commands from ap_server.py 2019-09-15 11:07:39 +01:00
jesopo
71896f8081 move AP server event/exports to __init__.py 2019-09-15 11:06:00 +01:00
jesopo
74b9fd5cf3 activities.py -> ap_activities.py 2019-09-15 10:52:55 +01:00
jesopo
7c7ea653cf send_mode() args should be an array 2019-09-15 10:49:56 +01:00
jesopo
54ee1b3594 re-merge fediverse an fediverse_server, so they can share utils 2019-09-15 10:43:46 +01:00
jesopo
ea34091a83 default REST API port to 5001, not 5000 2019-09-13 15:49:32 +01:00
jesopo
b835c109a0 move fediverse_server to a directory module, add rough outline of toot
federation
2019-09-13 11:51:39 +01:00
jesopo
fac0f569b8 remove TLS code from rest_api.py and force it to listen on localhost.
this is to force people to put something like nginx proxy_pass between the wider
internet and bitbot's rest api as the python stdlib http.server is not
production-secure.
2019-09-13 11:37:53 +01:00
jesopo
710caebbc4 _parse_flags() should always return 2 objects 2019-09-12 23:13:02 +01:00
jesopo
7094d94cd7 only apply modes for !flags when the user doesn't have them already 2019-09-12 22:40:23 +01:00
jesopo
1edb11ae1f _check_flags() when flags are changed 2019-09-12 22:40:06 +01:00
jesopo
60ced118a0 get_user_status() -> get_user_modes(), filter in format_activity.py 2019-09-12 22:39:21 +01:00
jesopo
5b538eb5b6 add !b as an alias of !ban 2019-09-12 22:20:36 +01:00
jesopo
9194925739 set a bitbot-specific useragent for fediverse requests 2019-09-12 21:58:26 +01:00
jesopo
612849d0c5 'resetkarme' -> 'resetkarma' 2019-09-12 21:57:40 +01:00
jesopo
04489ce90a return command (in case resolved alias) from _find_command_hook() 2019-09-12 21:53:52 +01:00
jesopo
2d7a192a6c limit !flags mode changes to 3-per-line, add comment as to why 2019-09-12 15:13:42 +01:00
jesopo
8ac0fce53f remove debug prints 2019-09-12 15:12:31 +01:00
jesopo
778cfe2010 remove extra ")" 2019-09-12 15:00:33 +01:00
jesopo
12fea0a38f sort uppercase chars after lowercase chars for !flags 2019-09-12 15:00:00 +01:00
jesopo
5206bf3d47 remove auto_mode.py, it has been superseded by !flags 2019-09-12 14:55:43 +01:00
jesopo
ad85536389 check a user is authenticated before applying modes, catch login too 2019-09-12 14:55:26 +01:00
jesopo
6b5e0791be first draft of !flags system 2019-09-12 14:29:28 +01:00
jesopo
9cda86065b use utils.SensitiveSetting in nickserv.py 2019-09-12 12:17:52 +01:00
jesopo
ba0911f2e7 add utils.Setting.format() so subtypes can format differently 2019-09-12 12:17:09 +01:00
jesopo
e68c5575d1 'karma-verbose' -> 'karma-pattern'. don't even parse when false 2019-09-12 12:09:16 +01:00
jesopo
8081a014ce remove now-unneeded "--require-config tls-certificate" from fediverse.py 2019-09-12 11:31:01 +01:00
jesopo
1b44b58aca add !invite 2019-09-12 10:24:10 +01:00
jesopo
ad45848abb Revert "switch to using IRCBot.http_client() in title.py"
This reverts commit 748008cf36.
2019-09-11 18:08:37 +01:00
jesopo
748008cf36 switch to using IRCBot.http_client() in title.py 2019-09-11 17:54:55 +01:00
jesopo
4a97c9eb0d refactor utils.http.requests to support a Request object 2019-09-11 17:44:07 +01:00
jesopo
4639951897 make context/conversation a "valid" URI 2019-09-11 13:46:21 +01:00
jesopo
72e99a2ce0 inbox should have https:// on it 2019-09-11 12:58:32 +01:00
jesopo
9988a49518 use correct link "type" for webfinger response 2019-09-11 12:49:10 +01:00
jesopo
cf9c82b131 force content-length on to REST API responses 2019-09-11 11:00:55 +01:00
jesopo
b6133579d1 return url on actor 2019-09-11 10:54:36 +01:00
jesopo
0d0a7b95ef force "acct:" on resource key on webfinger response 2019-09-11 10:53:57 +01:00
jesopo
bbef6ee392 remove (i think) unneeded @context, add user summary and name 2019-09-11 10:42:59 +01:00
jesopo
7a860240ef set content_type=ACTIVITY_TYPE on outbox 2019-09-10 18:48:26 +01:00
jesopo
ed07149257 remove unused duplicate ACTIVITY_TYPE 2019-09-10 18:48:15 +01:00
jesopo
be6f875e25 Revert "call self.finish() in rest_api.py in hopes it will force-close connections"
This reverts commit 5d6b2ff083.
2019-09-10 18:33:14 +01:00
jesopo
5d6b2ff083 call self.finish() in rest_api.py in hopes it will force-close connections 2019-09-10 18:28:50 +01:00
jesopo
1dfb3c4461 '_prepare_actitivy' -> '_prepare_activity' 2019-09-10 18:21:20 +01:00
jesopo
02b038e15f get_activities is a list, not a dict 2019-09-10 18:20:22 +01:00
jesopo
8726bd9717 implement first draft of fediverse outbox 2019-09-10 18:08:58 +01:00
jesopo
74d2c18954 return error codes from webfinger 2019-09-10 17:34:01 +01:00
jesopo
a99f359266 fix setting exported from fediverse_server.py 2019-09-10 17:33:49 +01:00
jesopo
c697c3bbb2 split out fediverse server to it's own module 2019-09-10 17:32:41 +01:00
jesopo
e96783dfac support webfinger resource not having "acct:" on the front 2019-09-10 16:51:08 +01:00
jesopo
e048f61c73 .strip() client cert to remove needless newlines 2019-09-10 16:42:09 +01:00
jesopo
d75d33c42c "%s", not "%d", cuz port is a str 2019-09-10 16:41:16 +01:00
jesopo
a02bfdf157 get REST API port from settings if it's not in Host header 2019-09-10 16:39:44 +01:00
jesopo
d2de2cca7d 'index' -> 'inbox' 2019-09-10 16:30:54 +01:00
jesopo
7636843fc7 'get_params' -> 'get_params_str' 2019-09-10 16:29:35 +01:00
jesopo
b6f4e9c458 'location' -> 'self_id' 2019-09-10 16:24:11 +01:00
jesopo
eb5b0c25b6 'for_url' -> 'url_for', '_ap_self._id' -> '_ap_self_id' 2019-09-10 16:22:54 +01:00
jesopo
7dac75e566 implement ActivityPub user endpoint 2019-09-10 16:21:31 +01:00
jesopo
49527495b8 CaseInsensitiveDict does not implement .get() yet 2019-09-10 15:59:54 +01:00
jesopo
6b17c64b15 'resouce' -> 'resource' 2019-09-10 15:51:58 +01:00
jesopo
3993447eeb 'account' is no longer reformatted u@instance 2019-09-10 15:46:25 +01:00
jesopo
90d0452bfd first draft of ActivityPub webfinger 2019-09-10 15:40:01 +01:00
jesopo
ef7da3409b don't bother sorting json keys when the json is minified 2019-09-10 15:08:06 +01:00
jesopo
9ac46bab7d duplicate 'rest-api' setting - copypaste issue for rest-api-minify 2019-09-10 15:00:47 +01:00
jesopo
2fc75c6af7 move more REST API code on to the main thread 2019-09-10 13:55:06 +01:00
jesopo
8653068650 'code' -> 'response.code' 2019-09-10 13:45:55 +01:00
jesopo
4a08c2d134 set response.code=200 as soon as we know there's a hook waiting for it 2019-09-10 13:45:14 +01:00
jesopo
fefb9d71fb 'event_response' -> 'obj' (copypaste error) 2019-09-10 13:39:59 +01:00
jesopo
3a0183eb03 refactor REST API to use a Response object 2019-09-10 13:38:25 +01:00
jesopo
7fbb5b2823 don't use full event names to check what command we're in 2019-09-10 12:59:52 +01:00
jesopo
bad108d7ce support disabling word tracking per channel, not just per user 2019-09-10 10:34:44 +01:00
jesopo
a9d11fc7f8 use rpartition, not partition, to avoid splitting on leading @ 2019-09-09 21:35:54 +01:00
jesopo
6d176a6aa1 add !unsilence 2019-09-09 18:06:37 +01:00
jesopo
0c5171a44f add +time param to !silence 2019-09-09 18:06:27 +01:00
jesopo
695c7982a6 add a special flag to allow commands to bypass !silence 2019-09-09 18:05:10 +01:00
jesopo
c8ece388cc use detect_encoding=False in github webhook url shortening 2019-09-09 16:08:51 +01:00
jesopo
8e824c9277 add !8 as alias of !8ball 2019-09-09 14:25:19 +01:00
jesopo
98931de283 remove redundant (and maybe wrong) GET params from webfinger call
closes #143
2019-09-09 10:30:06 +01:00
jesopo
b1033a0721 support location names for !timezone too 2019-09-08 18:22:04 +01:00
jesopo
95c007c1da support showing time for locations, not just users 2019-09-08 18:17:32 +01:00
jesopo
896b98bbd1 remove LOW priority from youtube regex - it doesnt need it 2019-09-08 12:21:28 +01:00
jesopo
d0202ff809 don't disregard matched backslashes before ampersand 2019-09-08 11:43:13 +01:00
jesopo
9e0934a47e support sed ampersand syntax 2019-09-08 11:18:08 +01:00
jesopo
a59afb883a accept "," as well as ":" as a sed target marker 2019-09-07 22:38:21 +01:00
jesopo
b807ffbba8 force timezone info on to badge dates 2019-09-07 22:02:08 +01:00
jesopo
aa2e7249b2 use default webfinger url when host-meta lookups fail 2019-09-07 21:49:22 +01:00
jesopo
40d98b0034 only strip "@" once from the start of fedi usernames 2019-09-07 17:44:20 +01:00
jesopo
c914870094 only strip "nick: " prefix from karma when the nickname is known 2019-09-07 17:39:24 +01:00
jesopo
c631575e4f don't group capture disregarded "nick: " prefix in karma 2019-09-07 17:34:55 +01:00
jesopo
4e617366d3 change to karma regex to best-effort strip "nick: " 2019-09-07 17:34:04 +01:00
jesopo
1340691413 support /embed/<id> youtube urls too 2019-09-07 16:28:18 +01:00
jesopo
dadefeb8f3 remove try-rejoin (on 477) logic. will move to a module later 2019-09-07 15:21:35 +01:00
jesopo
4c2c4a501c return quote category even if =quote isnt present 2019-09-07 15:17:30 +01:00
jesopo
b654660d96 477 should check that we're *not* in a channel before trying rejoin 2019-09-07 14:25:43 +01:00
jesopo
ec5c5808a5 better wording of "!stats <alias>" 2019-09-07 14:16:27 +01:00
jesopo
34e5f976cc support showing !stats per-network 2019-09-07 14:13:44 +01:00
jesopo
1cadbc79ac disregard empty JOIN channel params (e.g. "JOIN #bad,") 2019-09-07 12:58:20 +01:00
jesopo
ea97dbb16d Show the line that was actually send from !raw, after format and filter 2019-09-07 12:50:50 +01:00
jesopo
0a74a93672 'reconnections' dict is on IRCBot, not IRCServer 2019-09-07 12:22:54 +01:00
jesopo
6d1e7ad4b2 remove !qadd because !quote does the same things now 2019-09-05 18:09:16 +01:00
jesopo
7d96d346e1 show how many quotes found when searching with !quote 2019-09-05 18:09:02 +01:00
jesopo
0563305b20 support searching for quote content in !quote 2019-09-05 18:05:50 +01:00
jesopo
905abf46f0 automatically PART blacklisted channels if we join them (SAJOIN e.g.) 2019-09-05 15:16:18 +01:00
jesopo
d4bfde1a71 use tweet_mode="extended" for !tw user_timeline() calls too 2019-09-05 14:46:39 +01:00
jesopo
1e16cf601e don't just remove the first key in a JOIN when there's a blacklisted channel 2019-09-05 14:32:30 +01:00
jesopo
6e4ec91003 add channel_blacklist.py 2019-09-05 14:14:21 +01:00
jesopo
0578d9ef5b 'bot' -> '_bot' 2019-09-05 14:13:40 +01:00
jesopo
638df8729e switch to using pytz instead of an API for localised time 2019-09-05 12:25:17 +01:00
jesopo
1e79ed4249 remove debug prints from info.py 2019-09-05 11:58:35 +01:00
jesopo
1d95d2d12d 'recieved' -> 'received' 2019-09-04 15:59:37 +01:00
jesopo
62faf62b82 add !grab as an alias of !quotegrab 2019-09-04 15:54:43 +01:00
jesopo
9561cba168 add which.py - closes #134 2019-09-04 15:39:56 +01:00
jesopo
203216d94d Switch more settings to FunctionSettings 2019-09-04 14:27:10 +01:00
jesopo
43fab6777c switch throttle.py to use FunctionSetting 2019-09-04 12:11:22 +01:00
jesopo
786117b998 add a bot-wide setting to allow showing git webhook activity for private repos
closes #127
2019-09-04 11:15:59 +01:00
jesopo
c4428e479f Force removal of ":" from user_time.py API-provided ISO8601 2019-09-04 10:29:05 +01:00
jesopo
50742d336c also url_sanitise youtube urls found with argless !yt commands 2019-09-03 12:07:27 +01:00
jesopo
219382cc3c url_sanitise youtube urls (cut off ")"/">") 2019-09-03 12:05:22 +01:00
jesopo
24a510d1ca move mixed_unicode.py to bitbot-modules 2019-09-02 18:28:40 +01:00
jesopo
8ddff91748 remove strax.py - no one uses it 2019-09-02 17:41:38 +01:00
jesopo
2a0b8e9243 remove shakespeare.py - no one uses it 2019-09-02 17:41:23 +01:00
jesopo
a188a6f278 remove books.py - no one uses it 2019-09-02 17:39:33 +01:00
jesopo
71adca1492 default relay-extras to False 2019-09-02 16:16:28 +01:00
jesopo
a325f32b84 remove legacy --depends-on flags for github.py (leftover from webhooks) 2019-09-02 15:15:15 +01:00
jesopo
30ce2ef11c remove unused CHANNELSET_HELP const 2019-09-02 15:15:04 +01:00
jesopo
868512fcfd add --require-config hashflag to location.py 2019-09-02 15:03:22 +01:00
jesopo
8a4d5b3123 Add ability to prevent users specifying their own dns nameservers 2019-09-02 14:33:12 +01:00
jesopo
e1da095023 support per-channel dns nameservers 2019-09-02 14:23:51 +01:00
jesopo
c80aab88f3 put socket timeout and deadline around mumble queries 2019-09-02 14:18:27 +01:00
jesopo
3c7b276188 catch and rethrow gaierrors in mumble.py 2019-09-02 14:13:36 +01:00
jesopo
7959f1ab88 change Cache.py to be key:value 2019-09-02 14:07:26 +01:00
jesopo
72e1d71a0a Show mumble server version 2019-09-02 13:12:24 +01:00
jesopo
ce6413f53e Don't rely on pulling timestamp out of pong 2019-09-02 12:49:58 +01:00
jesopo
82bee70ca0 add mumble.py 2019-09-02 12:47:13 +01:00
jesopo
4ba99e57b7 .upper() SASL mechanism name 2019-09-02 10:29:20 +01:00
jesopo
9e43ea1599 add per-user fediverse setting 2019-09-02 08:51:56 +01:00
jesopo
8bebcb14c7 support "<nickname>: s/" sed format 2019-09-01 09:58:10 +01:00
jesopo
14125a6048 also cancel reconnections with !disconnect 2019-09-01 08:41:22 +01:00
jesopo
85efd75518 'usage' does not exist 2019-09-01 08:34:55 +01:00
jesopo
a57a06b1cc switch utils.deadline to a context manager 2019-08-30 18:13:12 +01:00
jesopo
162aab9851 use utils.deadline in sed.py 2019-08-30 17:17:31 +01:00
jesopo
4bfb4c3200 Add IntRangeSetting, reorder OptionsSetting arg order 2019-08-30 14:40:54 +01:00
jesopo
0d9bd57332 copypaste name collision for channel_op.py's op function 2019-08-30 12:26:52 +01:00
jesopo
8a2e364ffd also support 'realname' in !editserver 2019-08-30 11:53:57 +01:00
jesopo
fd0ad283f8 prefix formatted KICKs with "- " 2019-08-16 16:09:57 +01:00
jesopo
0b192d0feb count numeric OR non-alphanumeric as a word boundary 2019-08-16 15:33:34 +01:00
jesopo
94ef49be1b !config access should be "config", not "set". remove unused check_assert 2019-08-16 10:26:05 +01:00
jesopo
6332f80dc9 add !addpoint and !rmpoint (explicit ++/-- karma) 2019-08-15 13:38:04 +01:00
jesopo
bd5bc81d1c match .lower() repo names against .lower() hooked repo names 2019-08-14 15:28:20 +01:00
jesopo
6e571fbe1a set channel_op.py _name to ChanOp 2019-08-14 15:08:17 +01:00
jesopo
f1dfbd112f switch !mute to use +1s duration format 2019-08-14 15:07:48 +01:00
jesopo
9bc1b67831 add configurable default kick message per bot/server/channel 2019-08-14 14:51:16 +01:00
jesopo
e72a21778f remove debug print 2019-08-14 14:51:07 +01:00
jesopo
07a593ce20 !kickban's _ban call needs an add arg 2019-08-14 14:41:29 +01:00
jesopo
fa279aab93 refactor/rewrite channel_op.py, split highlight spam protection out 2019-08-14 14:38:47 +01:00
jesopo
4d8ce63efd alias !remindme to !in 2019-08-14 10:56:18 +01:00
jesopo
03c7e8f066 return matching string from buffer.find() as most uses were redundantly regexing 2019-08-13 13:48:03 +01:00
jesopo
9a51ac18ea "!yt" without args should get .message from BufferLine 2019-08-13 13:25:20 +01:00
jesopo
2af428cf2f Change REST API to listen on IPv6 2019-08-13 12:58:23 +01:00
jesopo
fc5e3d3936 add !version and !source
closes #84
2019-08-12 17:29:01 +01:00
jesopo
d9426abec1 suggest similar feeds when trying to remove an unknown feed
closes #100
2019-08-12 16:07:07 +01:00
jesopo
81a077c43a Show TTL for each record type from !dns
closes #102
2019-08-12 15:49:28 +01:00
jesopo
1db3929de3 check hashed and unhashed IDs, for backwards compatibility 2019-08-12 15:16:46 +01:00
jesopo
ff8b81a761 Store more "seen ids", hash seen ids so they take up a constant space 2019-08-12 15:08:36 +01:00
jesopo
8c58d33fa3 throttle negative and positive karma independently of each other
closes #117
2019-08-12 13:38:14 +01:00
jesopo
1478b3bb32 !rss read will assume url if there's only url registered for the channel 2019-08-12 12:37:47 +01:00
jesopo
cf76cd4991 typo, 'if seen_ids' -> 'if entries' 2019-08-09 23:23:10 +01:00
jesopo
fc765228eb implement !rss read <url>
closes #94
2019-08-09 16:48:41 +01:00
jesopo
99c16ab4b8 Remove debug prints 2019-08-05 15:44:57 +01:00
jesopo
357abba00d Use host-meta to find webfinger url, indent-flatten by raise calls 2019-08-05 15:41:24 +01:00
jesopo
73fd3f37ce Allow url shorteners to be specified per-channel 2019-08-05 10:48:16 +01:00
jesopo
2db2937038 'and' -> 'in'. typo 2019-08-03 11:10:19 +01:00
jesopo
bc0af579d0 move record type out of try, .upper() it 2019-08-02 17:42:57 +01:00
jesopo
0b39ed6410 Show error when a fedi user isn't found 2019-08-02 17:15:29 +01:00
jesopo
3a0cd6452c support pleroma-style outbox first 2019-08-02 17:15:16 +01:00
jesopo
a1150b610f 'itme' -> 'item' 2019-08-02 16:26:45 +01:00
jesopo
037f62ad4f 'Note' -> 'Create' for activity type 2019-08-02 16:25:43 +01:00
jesopo
b58c0f8b59 use "id" not "url", support boosts 2019-08-02 16:21:11 +01:00
jesopo
85c1222b54 add fediverse.py 2019-08-02 15:57:53 +01:00
jesopo
5ecc7074f9 add acronym.py
closes #115
2019-08-01 17:59:36 +01:00
jesopo
adf8a6ce53 'amd' -> 'and' 2019-07-31 11:59:29 +01:00
jesopo
10b7875544 Support youtu.be urls in _from_url 2019-07-31 11:58:08 +01:00
jesopo
0969127a36 Revert ".eat()ing privmsg/notice send should be high priority"
This reverts commit d2155eb204.
2019-07-30 15:01:29 +01:00
jesopo
d2155eb204 .eat()ing privmsg/notice send should be high priority 2019-07-30 14:40:07 +01:00
jesopo
c99cbaf118 handle 'CAP DEL' for something that wasn't advertised 2019-07-28 20:55:34 +01:00
jesopo
a0efd7c0c7 Use _make_socket provided timeout 2019-07-28 18:30:34 +01:00
jesopo
e2e48caf7f add proxy.py
closes #67
2019-07-28 18:15:04 +01:00
jesopo
06b41cb30e Show available hash algorithms when none is provided 2019-07-28 16:41:12 +01:00
jesopo
25b507e80c Refactor hook kwargs to be stored as a list of tuples to support key duplicates
closes #108
2019-07-28 12:35:04 +01:00
jesopo
047a21629f add !timezone 2019-07-27 21:09:45 +01:00
jesopo
944f32befb refactor youtube.py and handle playlist urls
closes #61
2019-07-26 15:19:24 +01:00
Iain R. Learmonth
5678fcdcba Adds an Onionoo module for looking up Tor relays
Adds a new torrelay command that can be used to search for a Tor relay
by fingerprint/nickname and also a new channel setting that allows relay
details to be automatically looked up when a 40-char hex fingerprint
appears in the channel.
2019-07-26 13:35:05 +01:00
jesopo
71152475b2 8ball.py -> eightball.py
closes #106
2019-07-26 11:16:04 +01:00
jesopo
89cb69ed46 have !unshorten look back throgh logs for a url 2019-07-23 18:07:47 +01:00
jesopo
a27aa6f7d8 add throttle.py
closes #101
2019-07-23 17:46:40 +01:00
jesopo
6931aa2ce1 wider watch for failed translation 2019-07-22 13:59:50 +01:00
jesopo
92c76766f5 batch up channel_save.py JOINs in to groups of 10 2019-07-22 12:42:43 +01:00
jesopo
c53174d10a Remove debug print from perform.py 2019-07-22 12:32:54 +01:00
jesopo
c214d84643 'event' doesn't exist in _ban 2019-07-17 14:59:25 +01:00
jesopo
02f9c0e02b lowerify isup.py's _name 2019-07-16 17:25:46 +01:00
jesopo
bdc4164e05 put a 4-second lifetime timeout on dns requests 2019-07-16 16:58:40 +01:00
jesopo
1106b5842c allow @<nameserver> arg to be anywhere in !dns command 2019-07-16 16:52:41 +01:00
jesopo
69bab50335 use reverse geocoding to turn location to latlon for weather 2019-07-16 16:42:32 +01:00
jesopo
759324bb65 expose reverse geocoding through exports 2019-07-16 16:42:13 +01:00
jesopo
c765a29d09 Don't try to get rss urls when there are none 2019-07-16 10:45:29 +01:00
jesopo
ad7f9a8024 add setting to shorten rss urls (rss-shorten) 2019-07-15 17:46:11 +01:00
jesopo
92511122ff add depends-on hashflags to rss.py 2019-07-15 17:45:48 +01:00
jesopo
5be7626fb4 add isup.py 2019-07-15 14:59:37 +01:00
jesopo
5b1b26160a use "extended" tweet mode so long tweets are not truncated 2019-07-15 14:27:37 +01:00
jesopo
5cae13edba replace \n\n with \n in command outputs 2019-07-15 14:27:04 +01:00
jesopo
c083d4845a support enabling kick-rejoin per channel 2019-07-11 22:18:10 +01:00
jesopo
baa13d9e7f add configurable kick-rejoin delay (default 5s) 2019-07-11 21:34:16 +01:00
jesopo
fa429a4c28 add kick-rejoin.py 2019-07-11 21:28:05 +01:00
jesopo
d3f09c5618 remove last quote if none is provided in !qdel 2019-07-11 20:47:39 +01:00
jesopo
c86ac45c15 bots need snacks too 2019-07-11 13:42:21 +01:00
jesopo
e7e32c0978 Show warning for private-only commands in channels and visa versa
closes #89
2019-07-11 13:31:35 +01:00
fosslinux
9809dfa522 consistently use 'todo list' vs 'todo' 2019-07-11 10:11:21 +10:00
jesopo
dc8c63c11b add ability to disable !mute for networks that dont support mutes 2019-07-10 08:57:08 +01:00
jesopo
55e5693341 ircv3_botignore.py should use HIGH priority 2019-07-09 21:25:43 +01:00
jesopo
b7fa8a2f52 add help and channel_only kwargs to !ops 2019-07-09 21:24:35 +01:00
jesopo
9ffe62f27e 'evnet' -> 'event' typo 2019-07-09 20:58:02 +01:00
jesopo
4f781f30eb add ops.py
closes #91
2019-07-09 20:48:38 +01:00
jesopo
b46a1f22f0 add --depends-on hashflag for slowvoice.py 2019-07-09 20:48:02 +01:00
jesopo
51bed87b60 catch and prettify dns.exception.DNSException
closes #90
2019-07-09 12:18:52 +01:00
jesopo
fc1ed92b4c add slowvoice.py 2019-07-09 11:43:02 +01:00
jesopo
b692bc7e88 Show new label for PR 'labeled' events 2019-07-09 09:46:25 +01:00
jesopo
6626f60a64 show new label for issue 'labeled' events 2019-07-09 09:42:42 +01:00
jesopo
2885b41bbb .lower()ify webhook repo names for case insensitive checks 2019-07-08 23:14:26 +01:00
jesopo
33e462d27b use entry["link"] for unique checking if entry["id"] isn't available 2019-07-08 15:56:19 +01:00
jesopo
c6c60a5192 TRACE log RSS timing 2019-07-08 13:46:12 +01:00
jesopo
c60edabd74 Handle request_many() not returning a Response for a url 2019-07-08 13:25:25 +01:00
jesopo
078681eddf add missing schema in utils.http.sanitise_url, use in rss.py 2019-07-08 12:54:06 +01:00
jesopo
1def848233 switch rss.py to use utils.http.request_many 2019-07-08 12:45:30 +01:00
jesopo
84df0cb054 only set last_stdout/last_stderr when there's actually output 2019-07-07 11:29:22 +01:00
jesopo
cd0a860f5f support rss/atom feeds that have no feed title 2019-07-07 10:28:20 +01:00
fosslinux
d7f72b642a fix typo; closes issue #80 2019-07-06 17:06:17 +10:00
jesopo
f9d5271762 "paramatered" -> "parametered" 2019-07-04 17:23:36 +01:00
jesopo
72840fc63f add bot-wide command-method option 2019-07-04 14:06:40 +01:00
jesopo
43c8ad0ff6 Add !editserver command 2019-07-04 13:15:51 +01:00
jesopo
6014a2b0da WARN log when a RSS feed throws in _check_url 2019-07-04 11:21:53 +01:00
jesopo
130b5d1927 add botset IntSetting for RSS interval 2019-07-04 11:15:01 +01:00
jesopo
689f977467 treat 437 the same as 433 (nickname already in use) 2019-07-04 10:44:52 +01:00
jesopo
61d354eb94 use stdout.append_prefix to put user nickname in without color 2019-07-03 14:04:36 +01:00
jesopo
d30f01670e Allow commands to append to out/err prefix 2019-07-03 14:04:24 +01:00
Anton McClure
b443202030
Add user nickname to \!weather prefix 2019-07-03 12:03:48 +00:00
jesopo
289c57c637 unset saved channel key on -k 2019-07-03 08:29:47 +01:00
jesopo
8609ff8383 remove debug prints 2019-07-03 08:16:31 +01:00
jesopo
9d23106bbd catch +k cmodes (MODE, 324) and store them 2019-07-03 08:14:06 +01:00
jesopo
76ab7935a0 return parsed modes from IRCChannel.parse_modes, pass through mode events 2019-07-03 08:13:28 +01:00
jesopo
6e2259131a Show an error (instead of throwing) when !define gets a 404 2019-07-03 07:59:12 +01:00
jesopo
e19638827e '+= 1' -> '+= value' 2019-07-02 23:36:18 +01:00
jesopo
718b6bc394 add !duckstats 2019-07-02 23:34:57 +01:00
jesopo
cd15b06b65 Intercept JOINs and attach known keys (channel_keys.py) 2019-07-02 21:38:31 +01:00
jesopo
bb47e7fa58 use raw/unformatted Setting usage strings for require_setting output 2019-07-02 20:59:39 +01:00
jesopo
a077e086cd Revamp perform.py (including adding channel-performs) 2019-07-02 20:46:00 +01:00
jesopo
702f5c5972 improve !ud regex 2019-07-02 14:53:08 +01:00
jesopo
1aab5c4c64 Actually use sanitised url when getting <title> 2019-07-02 14:36:18 +01:00
jesopo
df5f29f943 use utils.http.url_sanitise() in title.py 2019-07-02 14:16:16 +01:00
jesopo
d98b20ea7e mulitline-concat shouldn't be a c2c tag 2019-07-02 12:09:56 +01:00
jesopo
5013b81699 pass IRCUser objects through formatted.notice events 2019-07-02 08:48:18 +01:00
jesopo
6bb3b65fb8 Pass channel object along with formatted.notice.channel events 2019-07-02 08:18:41 +01:00
jesopo
a3c62f117a Add setting to disable relaying joins/parts/quits/modes/etc 2019-07-02 07:41:48 +01:00
jesopo
93b455d5b8 Don't double-shorten push range urls 2019-07-02 07:31:26 +01:00
jesopo
d671d8b470 'patern' -> 'pattern' 2019-07-01 22:50:58 +01:00
jesopo
4d096aa79d delete rss-hooks setting when it's empty 2019-07-01 21:16:04 +01:00
jesopo
08c723f9d0 We should be parsing out (server, channel) for rss hooks 2019-07-01 21:15:06 +01:00
jesopo
8b431d25e5 Make ignore logic PRIORITY_HIGH so it catches before format events 2019-07-01 20:13:16 +01:00
jesopo
8d2978e161 Remove PRIORITY values for NOTICE events - i dont think we need them 2019-07-01 19:54:00 +01:00
jesopo
3d7b3c922a Include NOTICEs in ignores 2019-07-01 19:52:49 +01:00
jesopo
97f891a632 Allow bot admins to add/remove channel-ignores 2019-07-01 19:36:51 +01:00
jesopo
863e87c9ca Support ignoring users per-channel 2019-07-01 19:32:40 +01:00
jesopo
ba581d8622 'in_args' -> 'min_args' 2019-07-01 19:23:39 +01:00
jesopo
6a823fac52 don't overwrite command_check_self() 2019-07-01 19:20:36 +01:00
jesopo
9314b25a96 Add depends-on hashflags for relay.py 2019-07-01 18:22:49 +01:00
jesopo
cda125e5b6 Replace direct relays with "relay groups" 2019-07-01 17:48:43 +01:00
jesopo
fda9869690 Add check.command.is-channel handler in commands module 2019-07-01 13:51:13 +01:00
jesopo
3f6a3243e1 don't prefix relay messages with 'relay/' 2019-07-01 12:45:02 +01:00
jesopo
fa1e9cbb58 Add RESET char in relay lines due to weechat bug 2019-06-30 12:40:40 +01:00
jesopo
62d92c760f make relay server name LIGHTBLUE 2019-06-30 11:42:59 +01:00
jesopo
ff0e294486 Make relaying LOW priority, so local event is printed before relaying 2019-06-30 10:42:49 +01:00
jesopo
992f16a685 Include town name, when available, in user location name 2019-06-30 10:41:25 +01:00
jesopo
cb07a5d708 OptionsSetting ctor should have empty options when using options_factory 2019-06-29 23:23:57 +01:00
jesopo
a64d577644 Show IRCd 'version' string in !specsup output 2019-06-29 22:44:05 +01:00
jesopo
19f716ab4c Implemnt _options_factory for OptionsSetting to have dynamic options 2019-06-29 22:26:28 +01:00
jesopo
b4c762eb4e Automatically format example text for OptionsSetting (showing options) 2019-06-29 21:33:26 +01:00
jesopo
a732bcfc25 Only accept highlight-commands when they have "," or ":" 2019-06-28 23:33:14 +01:00
jesopo
0e9aebdb81 'auto-github' should be a BoolSetting, not a Setting 2019-06-28 23:26:53 +01:00
jesopo
756396d758 Implement utils.OptionsSetting 2019-06-28 23:26:42 +01:00
jesopo
45565456ae add 'ircv3-stats' setting 2019-06-28 23:18:06 +01:00
jesopo
ae9d099a41 Refactor set/channelset/serverset/botset in to 'utils.Setting' objects 2019-06-28 23:16:05 +01:00
jesopo
890c893ddf Add ircv3.py - for IRCv3-related stats 2019-06-28 18:36:43 +01:00
jesopo
e6d8e75086 DEBUG log when trying to git.io-shorten a github url 2019-06-28 15:29:59 +01:00
jesopo
4006184385 remove dangling "," left over from moving code 2019-06-28 07:25:09 +01:00
jesopo
6a3af7f496 DEBUG log when we get a tweet from a stream 2019-06-28 07:24:06 +01:00
jesopo
1e30e76cad only create a range url when we have commits 2019-06-28 06:51:58 +01:00
jesopo
e0b7495ecc channel-only,require-mode,require-access -> channel_only,require_mode,require_access 2019-06-27 21:09:26 +01:00
jesopo
74befb18bc 'quiet' -> 'mute', add duration parameter 2019-06-27 20:52:32 +01:00
jesopo
1c5e1efecd add !quiet and !unquiet 2019-06-27 20:38:39 +01:00
jesopo
5ea0d9751b Only abort individual RSS feeds when they fail 2019-06-27 18:29:17 +01:00
jesopo
9c5c8cf563 seems i completely forgot try/except syntax 2019-06-27 18:21:07 +01:00
jesopo
95537378b4 Only show Exception message when rss feeds fail 2019-06-27 18:18:39 +01:00
jesopo
14b7a8ae11 exc_info need to be in an except block 2019-06-27 16:00:14 +01:00
jesopo
e30ae803b0 get rss feed xml ourselves so feedparser.parse can't hang on us 2019-06-27 11:56:50 +01:00
jesopo
d4fd841af2 Prefix PR commit outputs with "[PR] " 2019-06-27 11:27:15 +01:00
jesopo
1ef93e181f 'ref' -> 'sha' for getting PR commit titles 2019-06-27 11:21:09 +01:00
jesopo
e1f34c4b8a shortify push range url 2019-06-27 11:08:18 +01:00
jesopo
f61e3e2b99 pass single-commit url in to _format_push 2019-06-27 11:06:58 +01:00
jesopo
d7c4e9f67b forced does not exist; data["forced"] instead 2019-06-27 11:01:08 +01:00
jesopo
4f5af6f221 HTTP GET github PR commits url to get syncronise commit messages 2019-06-27 10:59:22 +01:00
jesopo
13f7ae682c Revert "Show commit message, not PR title, for PR pushes"
This reverts commit 24df8c996e.
2019-06-27 10:04:52 +01:00
jesopo
1926aafacb format._tweet() takes a server param now 2019-06-26 21:23:38 +01:00
jesopo
297c403248 add !unshorten 2019-06-26 18:09:39 +01:00
jesopo
24df8c996e Show commit message, not PR title, for PR pushes 2019-06-26 15:13:01 +01:00
jesopo
c5785a2d14 implement @utils.kwarg() magic, use it for command.regex hooks 2019-06-26 14:37:41 +01:00
jesopo
d2a1763dc8 'call_unsafe_for_result' -> 'call_for_result_unsafe' 2019-06-26 11:04:41 +01:00
jesopo
29b15da179 Switch all 'hook.kwargs.get(' calls to 'hook.get_kwarg(' 2019-06-26 10:59:52 +01:00
jesopo
6667f49ee3 dont use "|" multi-event syntax. it's weird 2019-06-26 10:59:03 +01:00
jesopo
2e41f93c4d add --depends-on hashflags to shorturl.py 2019-06-25 21:31:30 +01:00
jesopo
94dc2655e7 merge bitly code back in to shorturl.py as we use it for default shortener 2019-06-25 21:30:40 +01:00
jesopo
40a3a9ce08 'vote-start-restricted' -> 'votes-start-restricted' so as to avoid find 2019-06-25 20:00:53 +01:00
jesopo
19755778b6 event doesn't exist in _get_title 2019-06-25 18:04:36 +01:00
jesopo
12181bfec6 Add system to have multiple url shorteners and chose which to use 2019-06-25 17:53:00 +01:00
jesopo
cd299d92eb catch and format "unknown record type" exceptions 2019-06-25 14:57:03 +01:00
jesopo
6f5c692606 Allow specifying of nameserver as '!dns <host> @1.2.3.4' 2019-06-25 14:50:30 +01:00
jesopo
e8ebaadd11 Improve !dns command, allow setting dns nameserver per-server 2019-06-25 14:32:51 +01:00
jesopo
5e11c3fb9d unknown_command.py -> command_suggestions.py 2019-06-24 22:58:14 +01:00
jesopo
746db08d40 Make propability-based command suggestions on unknown command 2019-06-24 22:56:38 +01:00
jesopo
7f0af15e2d send is_channel kwarg on unknown.command event 2019-06-24 22:54:34 +01:00
jesopo
3f84c9871a Fire an event when a user tries an unknown command 2019-06-24 22:53:28 +01:00
jesopo
882bbdf0ff 'sucess_message' -> 'success_message' 2019-06-24 22:49:44 +01:00
jesopo
010f594774 'web hooks' -> 'webhooks' 2019-06-24 22:46:15 +01:00
jesopo
1defa04ad2 rss-seen-ids should be set per-url or they'll overwrite each other 2019-06-24 20:34:22 +01:00
jesopo
a96bffc79d '_title' -> '_name' 2019-06-24 20:23:36 +01:00
jesopo
2ccebaa4a0 Add missing import re 2019-06-24 19:32:32 +01:00
jesopo
622eda5a99 Don't show webhook notifications for private repos 2019-06-24 18:33:24 +01:00
jesopo
dd6b0fdfbd set git_webhooks _name to something nicer ("Webhooks") 2019-06-24 18:18:42 +01:00
jesopo
f66dd83551 remove use of _short_url in gitea.py 2019-06-24 17:47:14 +01:00
jesopo
75e8a64ff9 gitea create hooks have no url 2019-06-24 17:41:29 +01:00
jesopo
cbd35914db 'forced' pushes do not exist in gitea webhooks 2019-06-24 17:37:00 +01:00
jesopo
f10989e8bf Actually pass gitea handler for gitea hooks 2019-06-24 17:35:55 +01:00
jesopo
280fd68f7f use pusher 'login' not 'name' - gitea doesn't have 'name' 2019-06-24 17:31:45 +01:00
jesopo
3bc1eb8b8b gitea.GitHub -> gitea.Gitea 2019-06-24 17:17:01 +01:00
jesopo
6b8120dc51 Add gitea.py, fix some consts being in the wrong file 2019-06-24 17:14:39 +01:00
jesopo
d0d6af14d3 Add missing 'utils' import 2019-06-24 15:55:05 +01:00
jesopo
60a4f7aa4a Add missing colors.py file 2019-06-24 15:54:29 +01:00
jesopo
9ae97627c6 'webhooks' -> 'git-webhooks'. move all 'webhooks' settings to 'git-webhooks' 2019-06-24 15:51:55 +01:00
jesopo
c60fb9975f 'github-hooks' -> 'webhooks'. this is a breaking change!
Move any 'github-hooks' channel settings to 'webhook' settings
2019-06-24 15:43:31 +01:00
jesopo
831bcd0d23 Remove old imports from github.py, add missing webhook urllib import 2019-06-24 15:38:27 +01:00
jesopo
65a99c7a84 re-add lost REST API successful return 2019-06-24 15:21:58 +01:00
jesopo
5e51086cdd Fix typos, missed imports, wrong namespaces, etc 2019-06-24 15:20:29 +01:00
jesopo
14f2fd6a03 split github webhook logic in to a more general webhook module 2019-06-24 14:52:37 +01:00
jesopo
2ef85960e9 Wind speed is given to us in metres per second. convert to kph 2019-06-24 07:30:29 +01:00
jesopo
0c9dfd5bdb Also show windspeed in MPh 2019-06-24 07:12:58 +01:00
jesopo
8adf320e65 Get RSS feed and mark all IDs as "seen" when first adding the URL 2019-06-24 06:48:48 +01:00
jesopo
e88f23e413 iter through rss entries backwards 2019-06-23 16:22:45 +01:00
jesopo
54796470b1 First version of rss.py 2019-06-23 16:03:15 +01:00
jesopo
78be79b565 Don't discard empty command args for !hash 2019-06-23 12:14:06 +01:00
jesopo
ab466756cc Handle CAP ACK -<cap> and ACK from a REQ not sent by ircv3.py 2019-06-23 11:23:52 +01:00
jesopo
5028eb02d5 .send_raw() should be used if we're not .send()ing a ParsedLine 2019-06-23 11:22:47 +01:00
jesopo
ab4289aceb Only show highest channel access symbol in format_activity.py 2019-06-23 10:44:45 +01:00
jesopo
59432a4815 make labeled-response depend on batch 2019-06-23 09:44:59 +01:00
jesopo
2f4475a70f colorise ref for delete event, same as for create event 2019-06-22 22:42:52 +01:00
jesopo
29f5b7caf2 add deferred_read.py, to defer parsing of *some* lines until after 001 2019-06-22 22:22:50 +01:00
jesopo
6e93b1e990 Fix more instances of event["args"] (now event["line"].args) 2019-06-22 22:08:39 +01:00
jesopo
6d82cdcb93 Add missing ">" to !help output 2019-06-22 19:36:54 +01:00
jesopo
a7c338c1a9 self.bot.trigger() relaying - needed for write loop notification cross-network 2019-06-22 12:46:56 +01:00
jesopo
7174e83f14 Change raw.send and raw.receive commands to just pass around ParsedLines 2019-06-22 12:17:45 +01:00
jesopo
8671cb3708 Cache ParsedLine IDs of relay messages so we can ignore them (avoid loop) 2019-06-21 20:21:31 +01:00
jesopo
0a302dfd21 pass ParsedLine on message and formatted.* message events 2019-06-21 20:20:28 +01:00
jesopo
81ca751d96 set echo-message response ID to the ID of the original message 2019-06-21 18:22:36 +01:00
jesopo
80ec11966a Make echo-message depend on labeled-responses 2019-06-21 18:09:10 +01:00
jesopo
90c90e5bbd Implement dependency system for CAPs 2019-06-21 18:05:11 +01:00
jesopo
8a0d99f969 Adda system of aliases for CAPs, mostly for changeable draft specs and creating
dependence between moving specs
2019-06-21 17:15:46 +01:00
jesopo
4690f3f45d Show which server a label warning is for 2019-06-21 11:11:21 +01:00
jesopo
42f56a3309 Check our own (echoed) msgids 2019-06-21 10:47:39 +01:00
jesopo
1f2817c366 remove echo-message considerations from line_handler/message.py 2019-06-21 10:47:21 +01:00
jesopo
032c67be66 move echo-message to it's own module, eat events before they hit fake_echo.py 2019-06-21 10:41:22 +01:00
jesopo
e76ea39c71 Don't listen to raw.send.privmsg in linehandler, emulate recv in fake_echo.py 2019-06-21 10:35:05 +01:00
jesopo
b549773bf8 pass ParsedLine objects on raw.send.<command> events 2019-06-21 10:33:00 +01:00
jesopo
66393bcdbc pass from_self arg in formatted.* message events 2019-06-21 10:32:46 +01:00
jesopo
afa6b86c41 use event["from_self"] instead of checking nickname 2019-06-20 20:11:40 +01:00
jesopo
9f4e0c174a Remove debug print 2019-06-20 20:10:02 +01:00
jesopo
436baf40fb pass from_self through message/notice/tagmsg vents 2019-06-20 20:09:06 +01:00
jesopo
ac19b766bc Add relay.py - cross-network relaying 2019-06-20 18:08:59 +01:00
jesopo
c65a422284 remove extra formatted.notice format param 2019-06-20 17:58:02 +01:00
jesopo
32813b4b4e Change formatted.notice format to have context 2019-06-20 17:08:33 +01:00
jesopo
24cdff9e44 Add an export for IRCv3 CAPs 2019-06-20 16:52:23 +01:00
jesopo
8797be9457 return unshortened url when shortening fails 2019-06-20 16:35:58 +01:00
jesopo
a9514dfc44 add channel-access key for starting and ending votes 2019-06-20 12:13:55 +01:00
jesopo
20df824f72 Make it configurable whether people need permission to start a vote 2019-06-20 12:08:35 +01:00
jesopo
d08cb30f27 Set ignore.py --depends-on hashflags 2019-06-20 12:08:24 +01:00
jesopo
d3dda297e6 Don't exclude !commands from IRCBuffer objects 2019-06-20 11:55:58 +01:00
jesopo
282bde82c5 Move !ignore logic to it's own file 2019-06-20 11:51:04 +01:00
jesopo
70839e66ba Catch a module not being "found" in modules.py 2019-06-19 23:11:56 +01:00
jesopo
7bc24a8ba9 add ircv3_botignore.py, to ignore inspircd.org/bot users 2019-06-19 22:37:03 +01:00
jesopo
e55cd1e98e use utils.irc.MessageTag in ircv3_multiline.py 2019-06-19 22:36:24 +01:00
jesopo
4bb3eeb9f1 module is called 'check_mode', not 'channel_mode' 2019-06-19 22:33:03 +01:00
jesopo
e5b35ad64f Update CHANGELOG.md 2019-06-19 22:18:43 +01:00
jesopo
1d16009317 Add missing --depends-on hashflags 2019-06-19 22:14:13 +01:00
jesopo
3ae32db26e Don't let people vote in closed votes 2019-06-19 21:24:56 +01:00
jesopo
9407e083bd Manually strf birthdays so years are not .strip("0")ed 2019-06-19 11:06:26 +01:00
jesopo
938e1db963 add margin arg to ParsedLine.truncate so commands/outs.py doesn't do it
manually and cause potential issues with multi-byte chars
2019-06-19 10:34:42 +01:00
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