当我运行代码并发生一些事件时,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语句每次运行,即使应该只执行一个语句但是当我删除此函数时,一切正常。我希望我写得足够清楚,谢谢你的帮助
这条线
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"]