async def on_message(message: Message): # If the message is by a bot thats not irc then ignore it if message.author.bot and message.author.id != CONFIG['UWCS_DISCORD_BRIDGE_BOT_ID']: return user = db_session.query(User).filter(User.user_uid == message.author.id).first() if not user: user = User(user_uid=message.author.id, username=str(message.author)) db_session.add(user) else: user.last_seen = message.created_at # Commit the session so the user is available now db_session.commit() # Only log messages that were in a public channel if isinstance(message.channel, GuildChannel): # Log the message to the database logged_message = LoggedMessage(message_uid=message.id, message_content=message.clean_content, author=user.id, created_at=message.created_at, channel_name=message.channel.name) db_session.add(logged_message) db_session.commit() # Get all specified command prefixes for the bot command_prefixes = bot.command_prefix(bot, message) # Only process karma if the message was not a command (ie did not start with a command prefix) if True not in [message.content.startswith(prefix) for prefix in command_prefixes]: reply = process_karma(message, logged_message.id, db_session, CONFIG['KARMA_TIMEOUT']) if reply: await message.channel.send(reply) await bot.process_commands(message)
async def on_message(message: Message): # If the message is by a bot thats not irc then ignore it if message.author.bot and message.author.id != CONFIG[ "UWCS_DISCORD_BRIDGE_BOT_ID"]: return user = db_session.query(User).filter( User.user_uid == message.author.id).first() if not user: user = User(user_uid=message.author.id, username=str(message.author)) db_session.add(user) else: user.last_seen = message.created_at # Commit the session so the user is available now try: db_session.commit() except (ScalarListException, SQLAlchemyError): db_session.rollback() # Something very wrong, but not way to reliably recover so abort return # Only log messages that were in a public channel if isinstance(message.channel, GuildChannel): # Log the message to the database logged_message = LoggedMessage( message_uid=message.id, message_content=message.clean_content, author=user.id, created_at=message.created_at, channel_name=message.channel.name, ) db_session.add(logged_message) try: db_session.commit() except (ScalarListException, SQLAlchemyError): db_session.rollback() return # Get all specified command prefixes for the bot command_prefixes = bot.command_prefix(bot, message) # Only process karma if the message was not a command (ie did not start with a command prefix) if True not in [ message.content.startswith(prefix) for prefix in command_prefixes ]: reply = process_karma(message, logged_message.id, db_session, CONFIG["KARMA_TIMEOUT"]) if reply: await message.channel.send(reply) # allow irc users to use commands by altering content to remove the nick before sending for command processing # note that clean_content is *not* altered and everything relies on this fact for it to work without having to go back and lookup the message in the db # if message.content.startswith("**<"): <-- FOR TESTING if message.author.id == CONFIG["UWCS_DISCORD_BRIDGE_BOT_ID"]: # Search for first "> " and strip the message from there (Since irc nicks cant have <, > in them idx = message.content.find(">** ") idx += 4 message.content = message.content[idx:] await bot.process_commands(message)
async def on_message(self, message: Message): # If the message is by a bot that's not irc then ignore it if message.author.bot and not user_is_irc_bot(message): return user = (db_session.query(User).filter( User.user_uid == message.author.id).one_or_none()) if not user: user = User(user_uid=message.author.id, username=str(message.author)) db_session.add(user) else: user.last_seen = message.created_at # Commit the session so the user is available now try: db_session.commit() except (ScalarListException, SQLAlchemyError) as e: db_session.rollback() logging.error(e) # Something very wrong, but not way to reliably recover so abort return # Only log messages that were in a public channel if isinstance(message.channel, GuildChannel): # Log the message to the database logged_message = LoggedMessage( message_uid=message.id, message_content=message.clean_content, author=user.id, created_at=message.created_at, channel_name=message.channel.name, ) db_session.add(logged_message) try: db_session.commit() except (ScalarListException, SQLAlchemyError) as e: db_session.rollback() logging.error(e) return # KARMA # Get all specified command prefixes for the bot command_prefixes = self.bot.command_prefix(self.bot, message) # Only process karma if the message was not a command (ie did not start with a command prefix) if not any( message.content.startswith(prefix) for prefix in command_prefixes): reply = process_karma(message, logged_message.id, db_session, CONFIG.KARMA_TIMEOUT) if reply: await message.channel.send(reply)