Discord BOT,我想给每个人发送一个随机报价,除了一个用户

Discord BOT, I want to send everyone a random quote except to ONE user

我不是开发人员,以前我学过 HTML 和 CSS 但无论如何,我只是想在 Discord 服务器上为几个朋友制作一个有趣的 BOT 和我实际上找不到问题的解决方案。

基本上,我的机器人会发送随机报价,到目前为止一切正常,但我希望这个 ONE 用户不要收到报价,而是收到一条非常刻薄的消息。到目前为止一切顺利,他确实收到了消息,但 BOT 还向他发送了随机报价,我不希望它收到。

这是我的代码,可能很混乱,但希望它能帮助您理解 BOT 到目前为止的功能,以及您是否可以帮助我,让我知道我可以做些什么来解决该问题。当然,复制并粘贴您的解决方案会很棒,但如果您能向我解释为什么以及何时以及如何使用此代码以及等等等等,我很乐意,您明白我的意思,我想学习。

非常感谢大家! :)

P.S 我知道 str(message.author) == Username#### 不是最好的方法,但我还没有弄清楚如何让它与 UserID 一起使用

import discord
import os
import requests
import json

client = discord.Client()

def get_quote():
  response = requests.get ("https://zenquotes.io/api/random")
  json_data = json.loads(response.text)
  quote = json_data[0]['q'] + " -" + json_data[0]['a']
  return(quote)

@client.event
async def on_ready():
  print('We have logged in as {0.user}  '.format(client))

  @client.event
  async def on_message(message):
    if message.author == client.user:
      return
  
  @client.event
  async def on_message(message):
    if str(message.author) == "Hakuna#1721":
      await message.channel.send('Nic, tu pues, vas te laver !')
 
    if message.content.startswith('&inspireme'):
      quote = get_quote()
      await message.channel.send(quote)


client.run(os.getenv('TOKEN'))

你现在的代码编写方式,如果作者的名字是 "Hakuna#1721",你会向他们发送一个刻薄的信息,但你只是继续下一个 if 语句。你想做一个或另一个,但不是两个。我认为缺少的只是第一个 if 语句中的 return 语句。所以,这个:

@client.event
  async def on_message(message):
    if str(message.author) == "Hakuna#1721":
      await message.channel.send('Nic, tu pues, vas te laver !')
 
    if message.content.startswith('&inspireme'):
      quote = get_quote()
      await message.channel.send(quote)

会变成:

@client.event
  async def on_message(message):
    if str(message.author) == "Hakuna#1721":
      await message.channel.send('Nic, tu pues, vas te laver !')
      return
 
    if message.content.startswith('&inspireme'):
      quote = get_quote()
      await message.channel.send(quote)

现在,如果您向特定用户发送恶意消息,您将在此时终止该功能。你也可以这样写:

@client.event
  async def on_message(message):
    if str(message.author) == "Hakuna#1721":
      await message.channel.send('Nic, tu pues, vas te laver !')
 
    elif message.content.startswith('&inspireme'):
      quote = get_quote()
      await message.channel.send(quote)

请注意从 ifelif 的变化,使两个选项相互排斥。