With the ability of some networks to let channel owners grant kicking privileges without giving channel access (e.g. +r in Rizon's FLAGS access system), detecting whether the bot can kick simply by checking its channel access level is naïve and limiting.
The most likely way to make it smarter is to try kicking and then catch the 482 numeric ERR_CHANOPRIVSNEEDED if the bot is not allowed to use KICK, then optionally cache that status for that channel.
Not actually sure of the best way to do this sort of try/catch structure that depends on the response from the IRCd. Sopel isn't really designed to alter its behavior while handling one event based on an event that comes in afterward…
With the ability of some networks to let channel owners grant kicking privileges without giving channel access (e.g.
+r
in Rizon's FLAGS access system), detecting whether the bot can kick simply by checking its channel access level is naïve and limiting.The most likely way to make it smarter is to try kicking and then catch the 482 numeric
ERR_CHANOPRIVSNEEDED
if the bot is not allowed to useKICK
, then optionally cache that status for that channel.Not actually sure of the best way to do this sort of try/catch structure that depends on the response from the IRCd. Sopel isn't really designed to alter its behavior while handling one event based on an event that comes in afterward…