jesopo
48cc92cea3
remove double space for youtube views
2019-11-18 18:02:03 +00:00
jesopo
cec260ea3c
add optional duration for !ignore
2019-11-18 15:57:27 +00:00
jesopo
65023dc84b
move "+5m" syntax parsing out to utils.parse
2019-11-18 15:57:23 +00:00
jesopo
9c4902dcfe
"EventsResultsError"->"EventResultsError", move errors to utils.error
2019-11-18 12:06:59 +00:00
jesopo
d1c8357f97
combine both youtube API queries for playlists in to 1 query
2019-11-18 10:55:18 +00:00
jesopo
15e5d7d9bc
handle a youtube video having no reported views
...
closes #203
2019-11-18 10:52:22 +00:00
jesopo
d8ea5e9ce8
combine all 3 youtube API queries in to one (for speed!)
2019-11-18 10:52:01 +00:00
jesopo
0d4ddb709e
from_pretty_time was moved to utils.datetime
2019-11-17 19:48:05 +00:00
jesopo
79a6fd6609
refactor lastfm.py
2019-11-15 17:00:38 +00:00
jesopo
90baf17d10
boldify track/artist in !np output
2019-11-15 16:34:28 +00:00
jesopo
982f3b4912
refactor formatting privmsg/notice, show symbols on notice
2019-11-15 15:00:46 +00:00
jesopo
5d01db8514
move all datetime-related code from utils/__init__ to utils.datetime
2019-11-15 13:59:09 +00:00
jesopo
bfcf40edd7
split some stuff out of utils/__init__.py
2019-11-15 13:39:24 +00:00
jesopo
6a55b14afa
only try to shlex when we know we've found a command hook
2019-11-15 13:26:11 +00:00
jesopo
64ab4ca1a1
we should be passing args
in to _find_command_hook, not args_split
2019-11-15 12:37:43 +00:00
jesopo
27de12bcfe
dont use "%s %s"%("thing", "%s") trick - messes up when "thing" has %
2019-11-15 12:29:00 +00:00
jesopo
2cb55306c3
show first-words datestamp on !words output
2019-11-15 12:13:16 +00:00
jesopo
35cdc5321f
implement opt-in shlex for command args
...
closes #202
2019-11-15 11:33:52 +00:00
jesopo
718a026beb
don't respond to !botlist automatically
2019-11-15 10:57:29 +00:00
jesopo
7628e6f7fc
default target_user
to None so the var always exists
2019-11-14 15:48:36 +00:00
jesopo
f188969666
add minimal/normal for "topic set at" lines
2019-11-14 14:32:36 +00:00
jesopo
2fb689494c
allow channels to be excluded from print_activity.py
2019-11-14 13:25:41 +00:00
jesopo
a962fcf434
dont print full stacktrace when getting a url's title fails
2019-11-14 13:22:49 +00:00
jesopo
e17e439530
nickname
doesn't exist in _on_chghost
2019-11-14 13:17:22 +00:00
jesopo
736c125b98
nickname
doesn't exist in _on_part, should be user.nickname
2019-11-14 12:18:11 +00:00
jesopo
b96d8d2d80
typo, 'mode_str' -> 'modes_str'
2019-11-14 12:17:40 +00:00
jesopo
cf5294a835
don't duplicate event["user"].nickname
for prettified invite format
2019-11-14 11:59:50 +00:00
jesopo
c5870e3d36
typo, 'prettyb' -> 'pretty
2019-11-14 11:56:57 +00:00
jesopo
9af23c686d
pretty
will always be in event
but it might be None
2019-11-14 11:55:59 +00:00
jesopo
9abc668c0a
don't let RSS shortening failure CRITICAL the whole bot
2019-11-14 11:54:10 +00:00
jesopo
160fab8f4f
separate formatted lines from pretty formatted lines
2019-11-14 11:48:51 +00:00
jesopo
8ccbeb54d7
Show more fediverse errors to the end user
2019-11-14 10:53:34 +00:00
jesopo
76212faed4
change formatted JOIN to have userhost in parens
2019-11-13 11:19:28 +00:00
jesopo
d06efdabed
change formatted NOTICEs to be denoted by "-nick-" (PRIVMSG as "<nick>")
2019-11-11 18:02:15 +00:00
jesopo
46058c51c5
support !duckstats for users other than yourself
2019-11-11 17:21:40 +00:00
jesopo
3766262eab
change git_webhooks hashes from 8 characters to 7
2019-11-11 13:38:09 +00:00
jesopo
7d1cdd2251
prepend user nickname to command error messages
2019-11-11 13:26:14 +00:00
jesopo
9fa128fcc9
colorize nicknames on more line formatting events
2019-11-11 13:07:41 +00:00
jesopo
8a8bd8a77e
colorize nicks on JOIN formatting
2019-11-11 12:49:45 +00:00
jesopo
d43e96f7e7
add bot-wide option to colorize nicknames in formatted output
2019-11-11 12:20:27 +00:00
jesopo
9460238917
move tfl.py to bitbot-modules
2019-11-08 17:58:04 +00:00
jesopo
8eae040240
remove unneeded imports in tfl.py
2019-11-08 17:42:30 +00:00
jesopo
c20a31aa72
rewrite tfl.py
2019-11-08 17:41:29 +00:00
jesopo
b41588b098
Don't assign keys
to an array index that doesn't exist yet
2019-11-08 17:05:09 +00:00
jesopo
b4de61d009
JOIN keys should be comma separated too
2019-11-08 16:15:58 +00:00
jesopo
f2a13f9015
don't get far in to attempting sasl when we haven't got it configured
2019-11-08 13:34:05 +00:00
jesopo
e26d769b7b
refactor sasl a little and fix logic to retry on 908
2019-11-08 13:30:08 +00:00
jesopo
f8083ae7b4
switch to a better python eval API
2019-11-08 12:46:25 +00:00
jesopo
1231067012
'server_mechanimsms' -> 'server_mechanisms' typo
2019-11-08 10:20:23 +00:00
jesopo
5dc1ea3ffa
move on to command.regex if a given command isn't found
2019-11-06 13:05:41 +00:00
jesopo
fa28e4e7b2
add !c as an alias of !config
2019-11-05 12:51:10 +00:00
jesopo
28d3da85b4
!seen should get seen-info for target user, not current user
2019-11-04 15:33:57 +00:00
jesopo
983c7151ae
show branch name in !version output
2019-11-04 13:40:16 +00:00
jesopo
2642bd7dac
show when a fediverse Note is nothing but an attachment
2019-11-04 13:19:37 +00:00
jesopo
516884acb8
only .decompose() when it's an empty and unknown tag
2019-11-04 12:51:24 +00:00
jesopo
62781badc4
better line normalisation for fediverse Activities
2019-11-04 11:18:34 +00:00
jesopo
bcdffacab5
add on_pause() and on_resume() for module - use in rest_api.py
2019-11-04 10:52:41 +00:00
jesopo
754269576a
change labeled-response WARN logging to DEBUG - it's mostly unimportant
2019-11-04 10:17:47 +00:00
jesopo
423e6b00b6
remove !timezone as !time now shows UTC offset
2019-11-04 10:11:57 +00:00
jesopo
9de95d17e5
how many times can i typo "utc"
2019-11-03 12:50:47 +00:00
jesopo
352f6b26d3
"GMT" -> "UTC"
2019-11-03 12:48:50 +00:00
jesopo
4826ac67f8
show "published" for "updated" releases - seems theres a bug that prevents the former
2019-11-01 17:58:07 +00:00
jesopo
79beb17aa3
show GMT offset in !time output
2019-11-01 16:06:35 +00:00
jesopo
1d777f88b3
support "event category" for github so we can e.g. show only approvals
2019-11-01 13:30:31 +00:00
jesopo
96d175bc31
fix Gitea release
event return
2019-11-01 10:28:47 +00:00
fosslinux
7da08ffc80
tell user config setting is unchanged
2019-11-01 17:50:21 +11:00
Valentin Lorentz
135020b42f
Add .travis.yml to run mypy. ( #192 )
...
* Add typing to modules/tfl.py.
* Add .travis.yml to run mypy.
2019-11-01 06:10:35 +00:00
jesopo
307a767d22
'changed host (_@_)' -> 'changed host to _@_'
2019-10-31 15:51:24 +00:00
jesopo
a8113488aa
include CHGHOST lines in channel_log logs
2019-10-31 15:36:22 +00:00
jesopo
a73629bbf7
format and print CHGHOST events
2019-10-31 15:35:53 +00:00
jesopo
8831724af0
'element.contents' -> 'element.children' for consistency
2019-10-31 15:18:45 +00:00
jesopo
5d08a496a4
use lxml for parsing fedi Notes. html.parse is bad and unpredictable
2019-10-31 15:17:39 +00:00
jesopo
07c7afcf2e
use utils.parse.line_normalise in title.py
2019-10-31 10:27:42 +00:00
jesopo
10b5b19cff
don't try to parse empty <title>s
2019-10-31 10:27:00 +00:00
jesopo
930794c414
don't assume we're in a channel when we're not (title.py)
2019-10-31 10:26:00 +00:00
jesopo
aa4511e0d9
add server/channel config to disable command suggestions
2019-10-30 11:48:35 +00:00
jesopo
35cc2d539d
!seen seen-info should be per-channel, not network wide
...
closes #196
2019-10-30 11:42:00 +00:00
jesopo
4f5dbbb6e0
actually set server._sasl_timeout
2019-10-30 11:41:49 +00:00
jesopo
c0c1f85e83
timeout sasl/AUTHENTICATE handshakes after 15 seconds. closes #195
2019-10-30 11:20:07 +00:00
jesopo
0675285624
never bot.panic() on sasl hard fail - always just reconnect indefinitely
2019-10-30 11:03:55 +00:00
jesopo
9f7ef8e6d2
show youtube upload time as YYYY-MM-DD, not timespan
2019-10-30 10:25:18 +00:00
jesopo
3634b72622
add utils.date_human() - use it in badges.py
2019-10-30 10:25:07 +00:00
jesopo
8ec365ceef
don't record ACTIONs in markov chains
2019-10-29 18:09:57 +00:00
jesopo
d2b1250c97
boldify youtube video title so it stands out from all the information
2019-10-29 14:20:27 +00:00
jesopo
28139cdf68
show how long ago a youtube video was uploaded
...
closes #188
2019-10-29 10:20:29 +00:00
jesopo
6421cb6118
improve proxy.py socket override using nested function def
2019-10-28 18:11:57 +00:00
jesopo
18223a40ef
use the same formatting for "confidential_note" as "note"
2019-10-28 14:25:26 +00:00
jesopo
5a095b0787
support confidential notes on gitlab webhooks
2019-10-28 14:21:54 +00:00
jesopo
69e2511725
filter() needs a None
arg
2019-10-28 14:14:46 +00:00
jesopo
7287d9d083
we still need to pass the base "event" to handler.webhook
2019-10-28 14:13:14 +00:00
jesopo
12abf0c271
'action' -> 'event_action'
2019-10-28 14:12:20 +00:00
jesopo
7766c889f4
support event 'category' for GitLab (e.g. Note events but only for Issues)
2019-10-28 14:10:42 +00:00
jesopo
6ee76af907
fix relay exception
2019-10-28 13:56:04 +00:00
jesopo
65c7279ce0
allow relaying channels on the same server
2019-10-28 13:55:50 +00:00
jesopo
9eacdee086
"id" -> "iid"
2019-10-28 12:38:29 +00:00
jesopo
d20ff91e99
'issue_comment' -> 'issue_note', fix issue id referencing
2019-10-28 12:37:21 +00:00
jesopo
07a3ba5222
strip '"<>() from <title> words when checking for title/url difference
2019-10-28 12:25:23 +00:00
jesopo
74d9bf4da3
_messag_factory._ should take a tags
arg
2019-10-28 11:24:56 +00:00
jesopo
e6b4321f30
'_mesage_factory' -> '_message_factory'
2019-10-28 11:23:55 +00:00
jesopo
627e564dbd
_mess_factory -> _message_factory. funny typo lol
2019-10-28 11:23:02 +00:00
jesopo
6e16ed8d5e
pass confidential_issue through same parsing func as issue
...
closes #193
2019-10-28 11:20:46 +00:00
jesopo
802aa35e3d
support GitLab confidential issues
2019-10-28 11:17:56 +00:00
jesopo
7ee65f8f8c
remove src/utils/irc/protocol.py
2019-10-28 10:56:33 +00:00
jesopo
8f4b5a0e70
move IRCLine related code from utils.irc to IRCLine.py
2019-10-27 10:19:00 +00:00
jesopo
c4c076137d
fallback ActivityPub data encoding to utf8
2019-10-26 22:43:11 +01:00
jesopo
9053b2245c
we want both sides of the .split
2019-10-25 22:46:02 +01:00
jesopo
f92f2c9cc1
make repo_username
the subgroup when present
2019-10-25 22:37:03 +01:00
jesopo
bbd7a58914
support gitlab subgroups in git_webhooks
2019-10-25 22:32:01 +01:00
jesopo
ddc70a6bd9
add !cmute/!cunmute to set +m/-m on current channel
2019-10-25 18:30:57 +01:00
jesopo
7e6e40965b
comma-separate likes/dislikes for youtube videos
2019-10-25 15:07:30 +01:00
jesopo
877287291a
reason
arg of panic()
shouldn't be optional, detect current exception
2019-10-25 14:31:09 +01:00
jesopo
fce791e38b
Fix !startvote advice on voting on the started vote
2019-10-25 14:21:47 +01:00
jesopo
b23cc1e1bd
Allow !vote to be restricted to voiced-and-above users
2019-10-25 14:21:30 +01:00
jesopo
869e91fc2a
'existing_server' -> 'server'
2019-10-25 13:39:00 +01:00
jesopo
6a2e4f70df
re-add lost git_webhook branch filtering
2019-10-25 11:29:27 +01:00
jesopo
39d14102f9
support channels
GET param for git webhooks, to denote target channels
2019-10-25 10:09:17 +01:00
jesopo
51c914ebae
get account id (not just account name) from WHOX
...
closes #116
2019-10-20 18:27:06 +01:00
jesopo
f7aa56b8eb
also support twitter mobile urls
2019-10-20 17:10:01 +01:00
jesopo
31531949ce
flip create/delete tag detection logic
2019-10-20 13:39:04 +01:00
jesopo
a4fbc150c8
add missing ]
2019-10-20 13:36:26 +01:00
jesopo
b152c5e3a7
return None url param for tag_push
2019-10-20 13:34:41 +01:00
jesopo
e0403aa3d2
added gitlab Tag Push events
2019-10-20 12:51:11 +01:00
jesopo
ae549575e4
still show url when shortening is turned off
2019-10-19 18:58:29 +01:00
jesopo
4cce0bb54e
dont shorten git webhook urls by default
2019-10-19 17:09:04 +01:00
jesopo
ecca7927fe
youtube playlist info should be returning URL as a tuple item
2019-10-18 16:40:31 +01:00
jesopo
1c02de8a69
change !fedi "!" arg to still show CW but also show content of Note
2019-10-18 15:54:36 +01:00
jesopo
20a115e71d
add "!" arg to !fedi, to denote "dont show content warning"
2019-10-18 15:43:17 +01:00
jesopo
40a8406054
put a permission restriction on !tcpup - it could be abused for port scanning
2019-10-18 15:18:46 +01:00
jesopo
4391176c7f
major security fix: adding api keys should be admin-only
2019-10-18 15:17:04 +01:00
jesopo
f7d34e16bb
if a nickname has no location set, assume it's a location
2019-10-18 15:03:19 +01:00
jesopo
480a4f73a9
remove now-unused formatting params for urls
2019-10-18 14:07:34 +01:00
jesopo
86147ded77
pass git_webhook urls up to __init__.py to be shortened
2019-10-18 14:03:20 +01:00
jesopo
2b4f5dc75b
correctly color/phrase opened, closed and merged for MRs
2019-10-18 13:31:21 +01:00
jesopo
afd6800c98
show merge_request/merge events
2019-10-18 13:28:24 +01:00
jesopo
7d786baa65
"PR"->"MR" again, "open"->"opened" etc for MRs too
2019-10-18 12:20:23 +01:00
jesopo
b151e7eecd
'PR' -> 'MR' (they're "merge requests" on gitlab, not "pull requests")
2019-10-18 12:02:56 +01:00
jesopo
963d0d2de7
'opened' -> 'open' etc for gitlab event categories
2019-10-18 11:58:10 +01:00
jesopo
53b2407072
'open' -> 'opened' etc for gitlab issue webhook actions
2019-10-18 11:19:16 +01:00
jesopo
123cdcf0da
pull_request -> merge_request
2019-10-18 03:52:59 +01:00
jesopo
8ff4ad19eb
we should be showing 'title' (not 'description') for gitlab issue events
2019-10-17 11:50:57 +01:00
jesopo
a6093092b1
'issues' should be an alias for 'issue' in gitlab
2019-10-17 11:49:07 +01:00
jesopo
4a4a0ac45b
dont fail !weather when we decide a nickname is a location
2019-10-16 15:53:34 +01:00
jesopo
6d29291f47
also catch m.youtube.com urls
2019-10-15 17:27:02 +01:00
jesopo
fa97f12689
support AP Notes with content outside of HTML tags (e.g. pleroma)
2019-10-15 16:44:28 +01:00
jesopo
491ad531c2
mapped event names for gitlab webhooks should be 'issue' not 'issues'
2019-10-15 16:20:41 +01:00
jesopo
f0a9f00b57
'issues' -> 'issue', 'pull_request' -> 'merge_request'
2019-10-15 16:14:15 +01:00
jesopo
2f94e7546f
actually instantiate gitlab in git_webhooks/__init__.py
2019-10-15 16:10:18 +01:00
jesopo
be30cb81af
add first draft of gitlab webhook support
2019-10-15 16:04:30 +01:00
jesopo
41f5c5d607
move cve.py to bitbot-modules repo
2019-10-15 15:27:44 +01:00
jesopo
3f4eebf85b
show ,fedi latest-tweet also if it's a self-reply
2019-10-15 15:24:57 +01:00
jesopo
f739064d10
show first
toot if it's a boost, fix Note boost formatting
2019-10-15 15:13:28 +01:00
jesopo
205049ab6f
remove unused util functions in git_webhooks/gitea.py
2019-10-15 10:53:29 +01:00
jesopo
124fc4fc42
Set duck_lines
to -1 when a duck is waiting to quack - do not allow bef/trap
...
closes #177
2019-10-15 10:33:13 +01:00
jesopo
e58e9a2058
add .back suffix to database backups
2019-10-14 18:13:43 +01:00
jesopo
fe16c0132f
prune database backups even if there's more than 5
2019-10-14 18:07:18 +01:00
jesopo
11ade023e8
eat errors for failing to parse @commit
2019-10-14 14:03:47 +01:00
jesopo
a9111c7241
add ModuleManager.try_reload_modules(), to try reloading in a transaction
...
if any of the modules fails to reload, rollback and use the already loaded modules. closes #179
2019-10-14 12:56:04 +01:00
jesopo
af1fd37003
actually explicitly strip "unknown" html tags from fedi notes
2019-10-14 10:46:15 +01:00
jesopo
ea589b744f
Merge pull request #173 from panicbit/splitpoints
...
Adjust line splitpoints to word boundaries. closes #159
2019-10-12 21:50:24 +01:00
panicbit
c94327b58b
Remove @staticmethod
2019-10-12 18:30:22 +02:00
James Lu
dda27c1b1c
Show 0 karma in the colour of gold™
2019-10-11 23:23:58 -07:00
jesopo
3fc7294539
exit when all servers are disconnected after ctrl+c
2019-10-11 17:06:37 +01:00
jesopo
0207e8e2b6
Revert "no longer treat ctrl+c as "shutdown" - bitbotctl will take this job"
...
This reverts commit 73e6ede8cc
.
2019-10-11 15:41:51 +01:00
jesopo
73e6ede8cc
no longer treat ctrl+c as "shutdown" - bitbotctl will take this job
2019-10-11 15:39:01 +01:00
jesopo
a5eca53f0a
we need both id
and server
for !disconnect
2019-10-10 18:02:55 +01:00
jesopo
dd94f3a918
'.values()' -> '.items()'
2019-10-10 17:16:00 +01:00
jesopo
0960740aca
dont say a vote has changed when it's been "changed" to the same option
2019-10-10 17:15:03 +01:00
jesopo
c2f075599d
ignore invalid utf8 in markov log imports
2019-10-10 16:36:59 +01:00
jesopo
fe1c2c0205
'channel.find_setting()' -> 'channel.find_settings()'
2019-10-10 15:27:49 +01:00
jesopo
4db34b087d
server.hostmask() already exists
2019-10-10 12:19:34 +01:00
jesopo
d91cd02d34
change badges.py to use utils.datetime_utcnow() - less code dupe
2019-10-10 12:17:10 +01:00
jesopo
0331b763ff
refactor multi-line-to-line normalisation to utils.parse.line_normalise(), use it in rss.py
...
closes #174
2019-10-10 10:33:18 +01:00
jesopo
cf1002a2a9
strip HTML from RSS entry titles
...
closes #174
2019-10-10 10:20:44 +01:00
jesopo
97c439a9d7
!editserver only need an alias to exist, not to be currently connected
2019-10-09 20:56:38 +01:00
panicbit
d069d4b83f
Adjust line splitpoints to word boundaries
2019-10-09 20:54:42 +02:00
jesopo
87a7d74fc3
a chain has failed to generate if the result is the same as the input
2019-10-09 17:54:28 +01:00
jesopo
84ec6d812f
format multi-line toots on a single line using things like double space
2019-10-09 16:44:54 +01:00
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