IRC link as extension

This commit is contained in:
osmarks 2021-03-08 10:25:11 +00:00
parent fe0918120e
commit 76e04227a7
3 changed files with 17 additions and 4 deletions

View File

@ -15,12 +15,18 @@ def color_code(x):
return f"\x03{x}"
def random_color(id): return color_code(hashlib.blake2b(str(id).encode("utf-8")).digest()[0] % 13 + 2)
global_conn = None
async def initialize():
logging.info("Initializing IRC link")
joined = set()
loop = asyncio.get_event_loop()
reactor = irc.client_aio.AioReactor(loop=loop)
conn = await reactor.server().connect(util.config["irc"]["server"], util.config["irc"]["port"], util.config["irc"]["nick"])
global global_conn
global_conn = conn
def inuse(conn, event):
conn.nick(scramble(conn.get_nickname()))
@ -51,4 +57,10 @@ async def initialize():
conn.add_global_handler("nicknameinuse", inuse)
conn.add_global_handler("pubmsg", pubmsg)
eventbus.add_listener(util.config["irc"]["name"], on_bridge_message)
eventbus.add_listener(util.config["irc"]["name"], on_bridge_message)
def setup(bot):
asyncio.create_task(initialize())
def teardown(bot):
if global_conn: global_conn.disconnect()

View File

@ -52,7 +52,8 @@ command_errors = prometheus_client.Counter("abr_errors", "Count of errors encoun
async def on_command_error(ctx, err):
if isinstance(err, (commands.CommandNotFound, commands.CheckFailure)): return
if isinstance(err, commands.CommandInvokeError) and isinstance(err.original, ValueError): return await ctx.send(embed=util.error_embed(str(err.original)))
if isinstance(err, commands.MissingRequiredArgument): return await ctx.send(embed=util.error_embed(str(err)))
# TODO: really should find a way to detect ALL user errors here?
if isinstance(err, (commands.MissingRequiredArgument, commands.ExpectedClosingQuoteError, commands.InvalidEndOfQuotedStringError)): return await ctx.send(embed=util.error_embed(str(err)))
try:
command_errors.inc()
trace = re.sub("\n\n+", "\n", "\n".join(traceback.format_exception(err, err, err.__traceback__)))
@ -127,7 +128,6 @@ async def run_bot():
bot.database = await db.init(config["database"])
await eventbus.initial_load(bot.database)
await initial_load_webhooks(bot.database)
await irc_link.initialize()
for ext in util.extensions:
logging.info("loaded %s", ext)
bot.load_extension(ext)

View File

@ -263,7 +263,8 @@ extensions = (
"heavserver",
"voice",
"commands",
"userdata"
"userdata",
"irc_link"
)
# https://github.com/SawdustSoftware/simpleflake/blob/master/simpleflake/simpleflake.py