- Remove short-circuit in chk_decision event on day timeout. No idea why
I put that there to begin with...
- Don't make succubus remove voters from the list, rather just set their
weight to 0. This causes their vote to not count while still letting
stuff interact with the fact they voted succ (such as desperation totem)
- Ensure that mudkip's vote change works on day timeout as well
Some ircds (*cough*freenode*cough*) don't support any of the modern ciphersuites.
The default should therefore be useful to connect to such outdated ircds.
- Move the config comments to botconfig.py.example where they will be more useful,
and move the bits in settings.py near the other IRC-related settings.
- Removed support for hash types that aren't SHA-256 as we perform all the hashing on
our end (doesn't matter what the server does or does not support), and this greatly
simplifies the code while leaving things secure enough.
- Hardcode a default cipher suite according to mozilla modern standards, as the
builtin ciphersuite in python may be less secure for older python versions.
- Add support for EXTERNAL auth in SASL, if a client certificate is provided. If this
fails, it will fall back to PLAIN auth (to account for the case where a cert is added
to the bot, but has not yet been added to NickServ, so that the bot can connect and add
it to NickServ via !fsend)
- Redact passwords from console/log output so that asking people to pastebin their
--verbose output when reporting issues in #lykos is less fraught with peril.
If a TLS certificate fingerprint is provided, the client will check it against the SHA256 hex digest of the server's certificate. Different hash algorithms can be specified, and multiple fingerprints can be specified for networks with more than one server.
MessageDispatcher, sleepy mode, warnings, and the latency command,
to be exact. Sleepy also benefits from some code deduplication in
addition to now operating on users.
The warnings code could use a more comprehensive overhaul too, but
that's going to be harder to achieve.
The actor in this case will either be ourself (in which case users.Bot
already exists), or a services nick (which may not have a full hostmask,
and therefore cause hashing errors). Only try to add a user if we're
changing a channel mode. This may still break on chanmodes, needs more
testing in that regard.
It's not needed since we can import at function scope. Also make
chk_nightdone implicit for role commands executed during night, so we
can remove tons of redundant calls.
- Expand skel.py to be more useful
- Remove circular dependency from utilities.py. It *CANNOT* globally
import users.
- Remove unused functions from utilities.py and make some others proxy
through to user-aware functions to ensure functionality stays the
same.
- Remove duplicate event listener.
- Clarify some comments about stats.
In mael, when giving wolflist to someone who joined midday, I assumed
that pl was a player list when it was already finessed into a list of
strings.
In mudkip, it is possible for the lynch logic to try to lynch someone
twice due to how chk_decision works (if you're forcing someone and
someone ELSE has a majority vote, who actually gets voted depends on the
order in which the dict keys are iterated over). As a result, ensure
that the only possible choice to lynch is the person we're interested in
lynching.
Swap cultist with minion so wolf can collab with them better and not
screw themselves over n1, and make shaman always get dt n1 to make
things more interesting.
This gets rid of the (dced) hack, with var.DCED_LOSERS taking its place.
Succubus was not touched, as there is already a PR which converts it,
although the succubus events in other files were touched.
Some sites were updated to be (more) Users-aware, while others replaced
it with an old deprecated get_roles() API. As more things get converted,
these will hopefully get eliminated as well. A FIXME comment was added
to all such occurrences.