Discord bot正在发送多条消息

问题描述 投票:0回答:1

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

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

这是导致问题的main.py片段(包含discord bot):

@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语句每次运行,即使应该只执行一个语句但是当我删除此函数时,一切正常。我希望我写得足够清楚,谢谢你的帮助

python youtube-api youtube-data-api discord.py discord.py-rewrite
1个回答
0
投票

这条线

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"]

© www.soinside.com 2019 - 2024. All rights reserved.