jesopo
5aba3f509e
format multi-line tweets on a single line using things like double spaces
2019-10-09 15:35:20 +01:00
jesopo
1e1eeb9b7f
only FORCE_SUCCESS for masterlogin when there's a permissions requirement
2019-10-09 14:29:25 +01:00
jesopo
6b8323b6f5
also split auto-title words on /
2019-10-09 12:58:25 +01:00
jesopo
27da1f314b
[:,] shouldn't be optional because the wider group is
2019-10-09 10:33:31 +01:00
jesopo
7ea434e62e
only accept space between word and modifier for word karma when : or ,
2019-10-09 10:31:56 +01:00
jesopo
a43edd17ae
duck_active should be when the duck spawns
2019-10-08 21:52:26 +01:00
jesopo
90df25cd8d
typo, 'timer.repo()' -> 'timer.redo()'
2019-10-08 17:03:57 +01:00
jesopo
a2ccf85abf
duck-prevent-highlight by default, improve !friends/!enemies query
2019-10-08 16:28:52 +01:00
jesopo
5035a5370c
default !friends/!enemies to be for the current channel
2019-10-08 16:20:52 +01:00
jesopo
44a635b708
prefer url
over id
as it's usually a more user-friendly url
2019-10-08 16:07:35 +01:00
jesopo
921e59e0f8
!isupraw -> !tcpup
2019-10-08 16:02:29 +01:00
jesopo
ee64bfc5fc
look back in logs for URL when non is provided to !isup
2019-10-08 15:56:25 +01:00
jesopo
15782908db
add !isupraw - to check if a tcp connection is possible to a target
...
closes #120
2019-10-08 15:46:15 +01:00
jesopo
4157574516
show $n/$u/$h for ban-format-account help too
2019-10-08 15:08:16 +01:00
jesopo
d0aa1d34f1
don't consume ":"/"," in a karma target
2019-10-08 15:03:24 +01:00
jesopo
a5e489655d
move !which to help.py
2019-10-08 14:48:39 +01:00
jesopo
c547df81dd
add !apropos - to show commands with a given string in them
...
closes #133
2019-10-08 14:45:46 +01:00
jesopo
0226b48b0c
do not permit a space between () and karma modifier
2019-10-08 14:34:14 +01:00
jesopo
1b3ee1cb89
only show twitter url when one was not provided initially
2019-10-08 14:21:15 +01:00
jesopo
37e375c31f
allow !markovfor outside a channel when you share the channel with bitbot
2019-10-08 14:03:09 +01:00
jesopo
355689bb35
send ducks 5-20 seconds after the message that triggered it
2019-10-08 13:57:26 +01:00
jesopo
7a5edccb98
transient timers shouldn't use the event system
2019-10-08 13:49:55 +01:00
jesopo
513f8a1ddd
only show youtu.be url when one was not provided
...
closes #171
2019-10-08 11:39:14 +01:00
jesopo
6a0d41f069
make 'sasl' setting 'sensitive'
2019-10-07 13:12:17 +01:00
jesopo
5c3510fe7c
Setting.format() should effect when you change a setting, mostly for
...
SensitiveSetting
2019-10-07 13:11:58 +01:00
jesopo
50d1eb6b8c
combine find_setting() and find_setting_prefix() on user/channel/server/bot
2019-10-07 12:46:52 +01:00
jesopo
cac8cb7b7e
better help/usage for quote.py commands
...
closes #92
2019-10-04 15:25:53 +01:00
jesopo
3d7f6c9924
only allow !to against users bitbot has seen before
...
closes #111
2019-10-04 15:20:38 +01:00
jesopo
70aceab622
exclude lines with URLs in them from creating markov chains
...
closes #156
2019-10-04 15:14:43 +01:00
jesopo
472b5ba9f0
support !fedi with a URL to a Note
2019-10-04 13:06:29 +01:00
jesopo
8938e119b4
expand apikey
command to list, add, remove and info
...
closes #123
2019-10-04 12:39:36 +01:00
jesopo
843440ac97
preprocess.command returns now need action, message
returns
2019-10-04 12:05:28 +01:00
jesopo
432fd39441
also stop markov chain if we chose None
2019-10-04 11:57:11 +01:00
jesopo
8e4c0f4963
ignore one-char "words" in <title> if they're not a "letter"
2019-10-04 11:20:35 +01:00
jesopo
8f927afdc9
don't auto-title when a URL contains most of it's <title>
2019-10-04 10:52:07 +01:00
jesopo
3466a3c43e
Allow utils.Setting_ parse functions to throw detailed errors
2019-10-04 10:25:48 +01:00
jesopo
7e51165a23
check that third_words
isn't empty
2019-10-04 10:12:52 +01:00
jesopo
95f098b6d6
pass whether a command.regex trigger was an ACTION or not
2019-10-03 16:42:11 +01:00
jesopo
15f28dad1e
only look at PRIVMSG and NOTICE for !seen
2019-10-03 16:02:23 +01:00
jesopo
cee29ba1a5
split words/parens karma in to 2 regexes, only accept non-parens when ^$
...
closes #169
2019-10-03 13:20:35 +01:00
jesopo
db4bb7db56
add !ghcommit and @commit auto-github syntax
2019-10-03 12:09:18 +01:00
jesopo
ec628f4f70
alias
doesnt exist either
2019-10-03 05:19:16 +01:00
jesopo
54e4cd4e74
dont try to !connect to a variable that doesnt exist
2019-10-03 05:15:30 +01:00
Aron Heinecke
028c7758c9
Fix typo
2019-10-02 00:37:59 +02:00
jesopo
afb07f6531
only check arg number at all when not "$-"
2019-09-30 16:33:21 +01:00
jesopo
a9021813e5
first_word.lower() -> first_words[0].lower()
2019-09-30 16:31:13 +01:00
jesopo
f49f34a98f
first_word -> first_words, better if statement
2019-09-30 16:28:57 +01:00
jesopo
3c60de8164
support multiple first_words
2019-09-30 16:27:29 +01:00
jesopo
a75802129f
allow whitespace between karma target and ++/--
2019-09-30 15:36:13 +01:00
jesopo
f306213cb8
'is_localhost()' -> 'host_permitted()'
2019-09-30 15:15:20 +01:00
jesopo
1d34363db4
default sasl-hard-fail to false but add a bot-wide setting for it
2019-09-30 10:41:57 +01:00
jesopo
7d3521395e
add github-token to bot.conf.example, use in github.py when available
2019-09-30 10:35:36 +01:00
jesopo
0a1a3551a2
support "$-" for alias arg, meaning "0 or more args"
2019-09-30 10:15:12 +01:00
jesopo
bc63111984
add !msg
2019-09-27 16:18:49 +01:00
jesopo
514b0126f2
Revert "add !msg"
...
This reverts commit ddaf8a3890
.
2019-09-27 16:16:50 +01:00
jesopo
ddaf8a3890
add !msg
2019-09-27 16:14:39 +01:00
jesopo
2493cfa487
Merge pull request #164 from chiefnoah/master
...
Improves sentence processing for karma
2019-09-27 14:32:59 +01:00
Noah Pederson
c3f95130a3
Some minor cleanup
2019-09-27 07:32:09 -06:00
jesopo
c04ed5875d
pass username/hostname to get_user() so new.user events have that information
2019-09-27 12:54:20 +01:00
jesopo
54d874ddee
take an option server alias arg for !reconnect
...
closes #166
2019-09-27 12:35:28 +01:00
jesopo
efeffb62a9
!changenickname -> !nickname
2019-09-27 12:26:14 +01:00
jesopo
c332ccc1aa
add require_access flags to !silence/!unsilence
2019-09-26 17:56:10 +01:00
jesopo
3c2aef52f6
update username/hostname of Users when they send PRIVMSG/NOTICE/TAGMSG
2019-09-26 17:47:45 +01:00
jesopo
0f87c3c56e
add check_certificate.py, to warn about expiring or not valid client certs
2019-09-26 16:03:23 +01:00
jesopo
f7455e6347
capitalisation and comma for "!stats <alias>"
2019-09-26 14:59:26 +01:00
jesopo
2c8b3749cf
default !roll to 1d6
2019-09-26 14:48:05 +01:00
jesopo
17c899fb70
make dice count optional (default 1)
2019-09-26 14:32:48 +01:00
jesopo
c5b9a13b53
Show dice format error when regex doesn't match
2019-09-26 14:32:20 +01:00
jesopo
ab51bbaefa
only permit 3-digit modifiers
2019-09-26 14:31:38 +01:00
jesopo
0c211528ef
also show "total" when there's modifiers
2019-09-26 14:22:56 +01:00
jesopo
e2ececa9fd
fine. support up to d100
2019-09-26 14:15:54 +01:00
jesopo
3f71674369
allow up to d30, not just d20
2019-09-26 14:09:59 +01:00
jesopo
55c354cebb
add !dice as an alias of !roll
2019-09-26 14:06:58 +01:00
jesopo
d6fa786806
!k should be alias_of !kick
2019-09-26 14:06:47 +01:00
jesopo
8dc415fa4b
support +/- modifiers on dice !roll
2019-09-26 14:04:59 +01:00
jesopo
6cfab3f344
allow !grab for 1 to 3 most recent lines (default is 1)
2019-09-26 13:47:17 +01:00
jesopo
3be9029669
add !action to echo.py
2019-09-26 12:27:20 +01:00
jesopo
30588da3a7
returned
is now a tuple; we want message
2019-09-26 12:19:50 +01:00
jesopo
3c1a313ef2
'require-mode'/'require-access' -> 'require_mode'/'require_access'
...
closes #161
2019-09-26 12:15:35 +01:00
jesopo
2e80b223de
allow all preprocess.command and check.command failures to have a message
2019-09-26 12:14:55 +01:00
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