Ik probeer een listener
voor meme te maken. De bot reageert op het bericht als er "meme"
in staat. Het moet een meme sturen. Ik gebruik Praw voor dat doel.
Dit is de code die ik heb geschreven:
@nd.listen()
async def on_message(message):
if message.author == nd.user:
return
def findCoindences(w):
return re.compile(r'\b({0})\b'.format(w)).search
content = message.content
reaction = "👍"
subreddit = reddit.subreddit("memes")
for submission in subreddit.random():
submission_link = submission.url
if findCoindences('meme')(content.lower()):
await message.reply(submission_link)
await message.add_reaction(f"<{reaction}>")
Opmerking: ik heb reddit
al boven enkele regels gedefinieerd. Dat is niet de oorzaak denk ik.
Het probleem:
Telkens wanneer ik meme
stuur in de chat, wordt elke keer dezelfde meme verzonden. Ik wil dat het anders is, maar weet niet waar ik dit probleem heb.
Antwoord 1, autoriteit 100%
Je hoeft niets te herhalen. Praw biedt een methode waarmee je een willekeurige inzending van een subreddit kunt pakken.
Documentatie:
willekeurig()
Code:
@nd.listen()
async def on_message(message):
if message.author == nd.user:
return
def findCoindences(w):
return re.compile(r'\b({0})\b'.format(w)).search
content = message.content
reaction = "👍"
if findCoindences('meme')(content.lower()):
random_submission = reddit.subreddit('memes').random()
await message.reply(random_submission.url)
await message.add_reaction(f"<{reaction}>")
Opmerking: ik heb de random_submission naar de
If-statement
verplaatst omdat je geen inzending hoeft op te zoeken als het bericht geen “meme” zegt. Het zou gewoon de snelheidslimiet verspillen.