Discord.py TypeError:on_message()缺少1个仅关键字必需的参数:'search'

时间:2020-07-28 04:37:38

标签: python python-3.x discord discord.py discord.py-rewrite

@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之后搜索字符串,请让我知道,再次感谢所有帮助

1 个答案:

答案 0 :(得分:2)

on_message事件仅采用1个参数,即消息对象本身。 你想做

async def on_message(self, ctx, message):

然后,您可以使用消息对象的.content属性来执行此操作,而不用使用搜索参数(据我所知,这应该是整个消息内容。)

因此您可以通过执行以下操作获取查询字符串:

query_string = urllib.parse.urlencode({'search_query': message.content})