jesopo
1da8e15b78
!echo should have a min_args kwarg
2019-09-26 11:56:37 +01:00
jesopo
4bb20c49dd
make !silence effect min_args and unknown-command
...
closes #160
2019-09-26 11:56:14 +01:00
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