【发布时间】: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