【问题标题】:Discord bot is sending multiple messagesDiscord 机器人正在发送多条消息
【发布时间】:2019-09-12 19:42:38
【问题描述】:

当我运行代码并发生某些事件时,bot 一直在从第三个 elif 语句发送消息。此消息应该是 youtube 视频的链接,因为我创建了一个功能,可以读取某人发送的消息、搜索视频并返回视频链接

我将搜索视频的代码移至函数 getVid(),我将其移至另一个名为 search.py​​ 的文件,我尝试通过许多其他方式获取视频链接,但没有任何帮助

这是导致问题的 main.py sn-p(包含不和谐机器人):

@client.event
async def on_message(message):
    id = client.get_guild(###)

    if message.content == "!hello":
        await message.channel.send("hi")
    elif message.content == "!members":
        await message.channel.send(f"""All members: {id.member_count}""")
    elif message.content != "!hello" or "!members":
        res = search.getVid(message.content)
        await message.channel.send(res)

这里是 youtube api 连接 search.py​​:

def getVid(txt):
    req = youtube.search().list(q=txt, part="snippet", type="video", maxResults=3)
    res = req.execute()
    count = 0
    links = []
    for item in res['items']:
        links.append(item['id']['videoId'])
        count = count+1
        if count==3:
            break
    print(links)
    vid = links[0]
    print(links[0])
    link = f"http://youtube.com/watch?v={vid}"
    return link

我知道这看起来很恶心,但我真的尽了一切努力让它发挥作用。

第三条 elif 语句每次都会运行,即使应该只执行一条语句,但当我删除此函数时,一切正常。我希望我写得足够清楚,感谢您的帮助

【问题讨论】:

  • 您应该在on_message 的顶部添加if message.author == bot.user: return,以防止您的机器人响应自己的消息。

标签: python youtube-api youtube-data-api discord.py discord.py-rewrite


【解决方案1】:

线

elif message.content != "!hello" or "!members":

正在检查message.content != "!hello""!members" 的值是否为真。所以它总是会返回true。你会想要这样做:

elif message.content != "!hello" or message.content != "!members":

甚至:

message.content not in ["!hello", "!members"]

【讨论】:

    猜你喜欢
    • 2021-08-19
    • 2021-01-08
    • 2020-08-16
    • 2021-04-19
    • 2021-02-22
    • 2020-11-23
    • 2021-01-12
    • 2021-08-27
    • 2022-11-02
    相关资源
    最近更新 更多