Skip to content
Advertisement

Commands not working after adding message.delete() function to certain keywords

import discord
import random
from discord.ext import commands
from discord.ext.commands import Bot


client = discord.Client()
bot_prefix = "."
client = commands.Bot(command_prefix=bot_prefix, case_insensitive=True)

ban_words = ['fuck',
              'shit']


@client.event
async def on_ready():
    print("Shefkata e spremen")


async def on_message(ctx, message):
    if message.content.lower() in ban_words:
        await message.delete()


@client.command(pass_context=True, case_insensitive=True)
async def ping(ctx):
    await ctx.send(f'pong {round(client.latency * 1000)}ms')


@client.command(pass_context=True, case_insensitive=True)
async def shefe(ctx):
    await ctx.send("Sho sakash kopile")


@client.command(pass_context=True, case_insensitive=True)
async def zdravo(ctx):
    pozdravi = ["Zdravo",
                "Kaj si be",
                "Zdravo sinka"]
    await ctx.send(f'{random.choice(pozdravi)}')


@client.command(pass_context=True, aliases=['8ball'], case_insensitive=True)
async def _8ball(ctx, *, question):
    responses = ["It is certain.",
                 "It is decidedly so.",
                 "Without a doubt."]
    await ctx.send(f'Question: {question}nAnswer: {random.choice(responses)}')


@client.command(pass_context=True, case_insensitive=True)
async def dabs(ctx):
    broj = random.randint(0, 1000)
    if broj == 666:
        await ctx.send("JA PRONAJDE NAJRETKATA PORAKAnIMASHE 0.1% SHANSA DA TI SE PADNI")
        await ctx.send("https://imgur.com/poI3bZl")
    broj = random.randint(0, 100)
    if broj == 69:
        await ctx.send("https://imgur.com/OOgEaLb")
    else:
        await ctx.send("https://imgur.com/RFlt0bz")


@client.command(pass_context=True, case_insensitive=True)
async def commands(ctx):
    await ctx.send(".pingn.shefen.zdravon.8balln.dabs")

client.run('token')

The commands that used the bot prefix to run stopped working after adding a client event to delete messages containing certain keywords. I recently started coding so all help would be very appreciated. The discord.py documentation is kinda complicated so i cannot find what i am looking for. For more details please ask me in the comments.

Advertisement

Answer

You have to use this:

await client.process_commands(ctx)

Without this, none of your commands will work.


So, your event will look like this:

@client.event
async def on_message(ctx):
    message = ctx.content.lower()
    for word in ban_words:
        if word in message:
            await ctx.delete()
            return

    await client.process_commands(ctx)

Also, you forgot to add @client.event. Without it, the on_message() function won’t act as a listener.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement