How do I make a discord.py bot filter certain words/phrases?












0















Right now, I have



import discord
from discord.ext import commands
from discord.ext.commands import Bot
import os
bot = Bot(command_prefix="?")
with open("bad-words.txt") as file: # bad-words.txt contains one blacklisted phrase per line
bad_words = [bad_word.strip().lower() for bad_word in file.readlines()]
@bot.event
async def on_message(message):
message_content = message.content.strip().lower()
async for bad_word in bad_words:
if bad_word in message:
await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
await bot.delete_message(message)
bot.run(os.getenv("TOKEN"))


I have this Python code, and it doesn't work. I do not know why, because I am unable to view the errors. The goal is to have the Discord bot delete a message whenever it contains a blacklisted word or phrase that is in bad-words.txt, which is a file that contains one blacklisted phrase per line. The bot runs, but does not do anything. Thank you for your help.










share|improve this question























  • That async for should be a regular for. Why can't you see the errors?

    – Patrick Haugh
    Nov 24 '18 at 19:48
















0















Right now, I have



import discord
from discord.ext import commands
from discord.ext.commands import Bot
import os
bot = Bot(command_prefix="?")
with open("bad-words.txt") as file: # bad-words.txt contains one blacklisted phrase per line
bad_words = [bad_word.strip().lower() for bad_word in file.readlines()]
@bot.event
async def on_message(message):
message_content = message.content.strip().lower()
async for bad_word in bad_words:
if bad_word in message:
await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
await bot.delete_message(message)
bot.run(os.getenv("TOKEN"))


I have this Python code, and it doesn't work. I do not know why, because I am unable to view the errors. The goal is to have the Discord bot delete a message whenever it contains a blacklisted word or phrase that is in bad-words.txt, which is a file that contains one blacklisted phrase per line. The bot runs, but does not do anything. Thank you for your help.










share|improve this question























  • That async for should be a regular for. Why can't you see the errors?

    – Patrick Haugh
    Nov 24 '18 at 19:48














0












0








0








Right now, I have



import discord
from discord.ext import commands
from discord.ext.commands import Bot
import os
bot = Bot(command_prefix="?")
with open("bad-words.txt") as file: # bad-words.txt contains one blacklisted phrase per line
bad_words = [bad_word.strip().lower() for bad_word in file.readlines()]
@bot.event
async def on_message(message):
message_content = message.content.strip().lower()
async for bad_word in bad_words:
if bad_word in message:
await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
await bot.delete_message(message)
bot.run(os.getenv("TOKEN"))


I have this Python code, and it doesn't work. I do not know why, because I am unable to view the errors. The goal is to have the Discord bot delete a message whenever it contains a blacklisted word or phrase that is in bad-words.txt, which is a file that contains one blacklisted phrase per line. The bot runs, but does not do anything. Thank you for your help.










share|improve this question














Right now, I have



import discord
from discord.ext import commands
from discord.ext.commands import Bot
import os
bot = Bot(command_prefix="?")
with open("bad-words.txt") as file: # bad-words.txt contains one blacklisted phrase per line
bad_words = [bad_word.strip().lower() for bad_word in file.readlines()]
@bot.event
async def on_message(message):
message_content = message.content.strip().lower()
async for bad_word in bad_words:
if bad_word in message:
await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
await bot.delete_message(message)
bot.run(os.getenv("TOKEN"))


I have this Python code, and it doesn't work. I do not know why, because I am unable to view the errors. The goal is to have the Discord bot delete a message whenever it contains a blacklisted word or phrase that is in bad-words.txt, which is a file that contains one blacklisted phrase per line. The bot runs, but does not do anything. Thank you for your help.







python discord.py






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 24 '18 at 17:51









Benjamin SoykaBenjamin Soyka

207




207













  • That async for should be a regular for. Why can't you see the errors?

    – Patrick Haugh
    Nov 24 '18 at 19:48



















  • That async for should be a regular for. Why can't you see the errors?

    – Patrick Haugh
    Nov 24 '18 at 19:48

















That async for should be a regular for. Why can't you see the errors?

– Patrick Haugh
Nov 24 '18 at 19:48





That async for should be a regular for. Why can't you see the errors?

– Patrick Haugh
Nov 24 '18 at 19:48












1 Answer
1






active

oldest

votes


















2














Since you probably want to wait for the search to finish, you could just change the async for to a regular for as mentioned by Patrick Haugh:



for bad_word in bad_words:
if bad_word in message:
await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
await bot.delete_message(message)


However, in Python 3, the any() method can be used to simplify this further:



if any(bad_word in message for bad_word in bad_words):
await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
await bot.delete_message(message)





share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53460891%2fhow-do-i-make-a-discord-py-bot-filter-certain-words-phrases%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    Since you probably want to wait for the search to finish, you could just change the async for to a regular for as mentioned by Patrick Haugh:



    for bad_word in bad_words:
    if bad_word in message:
    await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
    await bot.delete_message(message)


    However, in Python 3, the any() method can be used to simplify this further:



    if any(bad_word in message for bad_word in bad_words):
    await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
    await bot.delete_message(message)





    share|improve this answer




























      2














      Since you probably want to wait for the search to finish, you could just change the async for to a regular for as mentioned by Patrick Haugh:



      for bad_word in bad_words:
      if bad_word in message:
      await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
      await bot.delete_message(message)


      However, in Python 3, the any() method can be used to simplify this further:



      if any(bad_word in message for bad_word in bad_words):
      await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
      await bot.delete_message(message)





      share|improve this answer


























        2












        2








        2







        Since you probably want to wait for the search to finish, you could just change the async for to a regular for as mentioned by Patrick Haugh:



        for bad_word in bad_words:
        if bad_word in message:
        await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
        await bot.delete_message(message)


        However, in Python 3, the any() method can be used to simplify this further:



        if any(bad_word in message for bad_word in bad_words):
        await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
        await bot.delete_message(message)





        share|improve this answer













        Since you probably want to wait for the search to finish, you could just change the async for to a regular for as mentioned by Patrick Haugh:



        for bad_word in bad_words:
        if bad_word in message:
        await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
        await bot.delete_message(message)


        However, in Python 3, the any() method can be used to simplify this further:



        if any(bad_word in message for bad_word in bad_words):
        await bot.send_message(message.channel, "{}, your message has been censored.".format(message.author.mention))
        await bot.delete_message(message)






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 24 '18 at 23:45









        kxoraxekxoraxe

        4612




        4612






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53460891%2fhow-do-i-make-a-discord-py-bot-filter-certain-words-phrases%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Contact image not getting when fetch all contact list from iPhone by CNContact

            count number of partitions of a set with n elements into k subsets

            A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks