当我运行代码并且发生某些事件时,机器人一直在从第三个 elif 语句发送消息。此消息应该是指向YouTube视频的链接,因为我创建了一个函数,可以读取某人发送的消息,搜索视频并返回视频链接
我将搜索视频的代码移动到函数getVid((,将其移动到另一个名为 search.py 的文件,我尝试以许多其他方式获取视频链接,但没有任何帮助
这是导致问题(包含不和谐机器人(main.py 片段:
@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"]