v1.11.0
Added:
rss.py
- Show
weather.py
windspeed in MPh too git_webhooks/gitea.py
acronym.py
!editserver
inadmin.py
channel_keys.py
to centrally track/use channel keys!mute
and!unmute
inchannel_op.py
command_suggestions.py
- appendable command prefixes
@utils.kwarg
fediverse.py
- gitea webhooks (
git_webhooks/gitea.py
) - Show available
!hash
algorithms - per-channel-per-user ignores (
ignore.py
,!cignore
) ircv3.py
- to show ircv3 support statsisup.py
kick_rejoin.py
- Handle
ERR_UNAVAILRESOURCE
onionoo.py
(thanks @irl)ops.py
to highlight ops (opt-in)- Per-channel
perform.py
(!cperform
) proxy.py
- Configurable URL shorteners (
shorturl.py
) !unshorten
(shorturl.py
)slowvoice.py
throttle.py
!timezone
(user_time.py
)- Show
!weather
target nickname in command prefix - Parse youtube playlists (
youtube.py
) utils.http.url_sanitise()
utils.http.request_many()
./start.py --startup-disconnects
./start.py --remove-server <alias>
!remindme
as an alias of!in
(in.py
)!source
and!version
(info.py
)- Show TTL for DNS records (
ip_addresses.py
) !addpoint
/!rmpoint
as more explicit++
/--
for karma (karma.py
)
Changed:
- Move
_check()
call to event loop func - Split out github webhook functionality to
git_webhooks/github.py
- Refactored @utils.export settings to be object-oriented
- Warn when channel-only/private-only is not met
8ball.py
->eightball.py
(can't import things that start with a digit)github.py
->git_webhooks
- revamp
!dns
to take optional nameserver and record typ !quotedel
without quote removes most recent- Relays moved to relay "groups" that channels can "join" and "leave"
- Rewrote
EventManager
for efficiency and simplicity - Moved timers/cache/etc from read loop to event loop
- Better and more exhaustive channel move tracking
- Don't silently truncate
ParsedLine
at newline @utils.hook
/@utils.export
now use a single object that handles parsing!ban
/!kickban
/!mute
duration syntax changed (channel_op.py
)- Highlight spam protection logic moved to own module (
highlight_spam.py
) IRCBuffer.find()
returns the matched string- Positive and negative karma throttled seperately (
karma.py
) - REST API now listens in IPv6 (
rest_api.py
)
Fixed:
- Catch and rethrow not-found definitions in
define.py
ircv3_botignore.py
event priorityCAP DEL
crash whenDEL
ing something that was not advertisedParsedLine.format()
didn't prefixsource
with":"
_write_buffer
locking to avoid race conditionCapability().copy().depends_on
was mutable to the original copy