@commands.Cog.listener()
async def on_message(self, message):
if message.guild.id == 464298877823221761:
if message.content.find("!yt") != -1:
query_string = urllib.parse.urlencode({'search_query': message})
htm_content = urllib.request.urlopen('http://www.youtube.com/results?' + query_string)
search_results = re.findall(r'/watch\?v=(.{11})',htm_content.read().decode())
await message.channel.send('http://www.youtube.com/watch?v=' + search_results[0])
await self.bot.process_commands
在这里遇到麻烦,我尝试阅读文档,但是什么也没有,非常感谢您的帮助
示例应如下所示:
!yt Never gonna give you up
Bot:https://youtu.be/dQw4w9WgXcQ
以下是整个代码:https://hastebin.com/icaturepup.py
我更新了问题,在这个版本中,我可以搜索到youtube,但是它会搜索整个字符串,如果这里有人知道怎么做,我只需要在!yt
之后搜索字符串,请让我知道,再次感谢所有帮助
答案 0 :(得分:2)
on_message
事件仅采用1个参数,即消息对象本身。
你想做
async def on_message(self, ctx, message):
然后,您可以使用消息对象的.content
属性来执行此操作,而不用使用搜索参数(据我所知,这应该是整个消息内容。)
因此您可以通过执行以下操作获取查询字符串:
query_string = urllib.parse.urlencode({'search_query': message.content})