Когда я запускаю код и происходит какое-то событие, бот все время отправляет сообщение из третьего оператора elif. Это сообщение должно быть ссылкой на видео на YouTube, потому что я сделал функцию, которая читает сообщение, отправленное кем-то, выполняет поиск видео и возвращает ссылку на видео.
Я переместил код, который ищет видео, в функцию getVid (), я переместил его в другой файл с именем search.py, я пробовал получить ссылку на видео многими другими способами, но ничего не помогло
Это фрагмент main.py, вызывающий проблему (содержащий бота Discord):
@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 connection 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 запускается каждый раз, даже если должен выполняться только один оператор, но когда я удаляю эту функцию, все работает правильно. Надеюсь, я написал это достаточно ясно, спасибо за любую помощь
if message.author == bot.user: return
в началоon_message
, чтобы бот не отвечал на собственные сообщения. - person Patrick Haugh   schedule 23.04.2019