async def on_message_edit(_, message): for role in message.role_mentions: if role.id == "239175340180635649": # ex support role return if not message.content.startswith(">>"): return arg_string = message.content[2:].split("\n", 1)[0] try: args = parser.parse_args(shlex.split(arg_string)) except (argparse.ArgumentError, HelpException) as e: return await private_msg_code(message, str(e)) return await dispatcher.handle(args.command, client, message, args)
async def on_message(message): for role in message.role_mentions: if role.id == "239175340180635649": # ex support role return if message.server is not None: server_id = message.server.id server_name = message.server.name else: server_id = "0" server_name = "Private Message" if message.content.startswith(">>"): today = datetime.datetime.today().strftime("%a %d %b %H:%M:%S") logging.info("Date: {} User: {} Server: {} Command {} ".format( today, message.author, server_name, message.content[:50])) # TODO Deduplicate messages (or try to) # if not message.author.id == "292646750743691266": # if not message.content.startswith(">>"): # message_content = message.content # second_mes = await client.wait_for_message(author=message.author, timeout=10, content=message_content) # try: # if second_mes.attachments: # second_mes = None # except AttributeError: # return # if second_mes: # await client.delete_message(second_mes) if server_id == "221919789017202688": # eX Server if message.channel.id == "338273467483029515": # welcome if message.author.id != client.user.id: # own bot await delete_user_message(message) if not message.content.startswith(">>"): return arg_string = message.content[2:].split("\n", 1)[0] try: args = parser.parse_args(shlex.split(arg_string)) except (argparse.ArgumentError, HelpException) as e: await delete_user_message(message) return await private_msg_code(message, str(e)) return await dispatcher.handle(args.command, client, message, args)
async def handle_commands(message: discord.Message): is_guild = isinstance(message.channel, discord.abc.GuildChannel) if message.author.id == client.user.id: # own bot return if message.author.id in prison_inmates: # user in prison are not allowed to use any command return if is_guild and message.guild.id == EX_SERVER: if message.channel.id == EX_WELCOME_CHANNEL: await delete_user_message(message) # no return here # prevent forwarding '>>' messages if not message.content.startswith(">>") or len( message.content) == 2: # prevent forwarding '>>' messages return args_string = message.clean_content[2:] if not is_guild and args_string.split(" ")[0] not in [ "getnative", "grain", "help" ]: return await message.author.send( "This command is not allowed in private chat, sorry :(") if is_guild: today = datetime.datetime.today().strftime("%a %d %b %H:%M:%S") logging.info( f"Date: {today} User: {message.author} Server: {message.guild.name} " f"Channel: {message.channel.name} Command: {message.content[:50]}") arg_list = shlex.split(args_string) try: args = parser.parse_args(arg_list) except ValueError as err: return await private_msg(message, f"```\n{err}```") except HelpException as err: await delete_user_message(message) return await private_msg(message, f"```\n{err}```") except (UnkownCommandException, argparse.ArgumentError) as err: if arg_list[0] not in dispatcher.commands: return # not a valid command, so just ignore it return await private_msg(message, f"```\n{err}```") return await dispatcher.handle(args.command, client, message, args)
async def on_message(message): for role in message.role_mentions: if role.id == "239175340180635649": # ex support role return if message.server is not None: server_id = message.server.id server_name = message.server.name else: server_id = "0" server_name = "Private Message" if server_id == "221919789017202688": # eX Server if message.channel.id == "338273467483029515": # welcome if message.author.id != client.user.id: # own bot await delete_user_message(message) if not message.content.startswith(">>"): return if message.content.startswith(">>"): today = datetime.datetime.today().strftime("%a %d %b %H:%M:%S") logging.info( f"Date: {today} User: {message.author} Server: {server_name} Channel: {message.channel.name} " f"Command: {message.content[:50]}") arg_string = message.content[2:].split("\n", 1)[0] arg_string = shlex.split(arg_string) try: args = parser.parse_args(arg_string) except HelpException as err: await delete_user_message(message) return await private_msg_code(message, str(err)) except (UnkownCommandException, argparse.ArgumentError) as err: if arg_string[0] in dispatcher.commands: await delete_user_message(message) return await private_msg_code(message, str(err)) return return await dispatcher.handle(args.command, client, message, args)
async def handle_commands(message): if isinstance(message.channel, discord.abc.GuildChannel): server_name = message.guild.name channel_name = message.channel.name else: server_name = "Private Message" channel_name = None if not message.content.startswith(">>"): return if len(message.content) == 2: return today = datetime.datetime.today().strftime("%a %d %b %H:%M:%S") logging.info( f"Date: {today} User: {message.author} Server: {server_name} Channel: {channel_name} " f"Command: {message.content[:50]}") arg_string = message.clean_content[2:] try: arg_string = shlex.split(arg_string) except ValueError as err: return await send_message(message.author, f"```{str(err)}```") try: args = parser.parse_args(arg_string) except HelpException as err: return await send_message(message.author, f"```{str(err)}```") except (UnkownCommandException, argparse.ArgumentError) as err: if arg_string[0] == "spoiler": await delete_message(message) if arg_string[0] in dispatcher.commands: return await send_message(message.author, f"```{str(err)}```") return return await dispatcher.handle(args.command, client, message, args)