程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)?

开发过程中遇到on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)的问题如何解决?下面主要结合日常开发的经验,给出你关于on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)的解决方法建议,希望对你解决on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)有所启发或帮助;

所以我用 python 编写了这个简单的 discord bot,当我尝试一些命令时,它给了我“on.message () 需要 0 个位置参数,但给出了 1 个”。这是机器人的代码。

import discord
import os
import requests
import Json
from keep_alive import keep_alive


clIEnt = discord.ClIEnt ()



@clIEnt.event
async def on_ready () :
  await clIEnt.change_presence(activity=discord.Game('Sivo nebo'))
  print ('We have logged in as {0.user}'.format(clIEnt))

@clIEnt.event
async def on_message () :
  if message.author == clIEnt.user :
    return  

  
  if message.content.startswith('!hi') :
    await message.chAnnel.send('Hi!')
  if message.content.startswith('!goodbye') :
    await message.chAnnel.send('Goodbye!')
  
    

keep_alive()
clIEnt.run(os.getenv('TOKEN'))

解决方法

所有事件都采用隐式上下文参数。

async def on_ready(ctX):
    ...

async def on_message(ctX):
    ...
,

尝试使用 async def on_message(messagE):

我很确定您当前的代码不会工作,因为消息未定义。

,

如果您查看 discord.py documentation,您会看到 on_message() event reference 隐式采用参数:message。因此,当您使用非参数定义 on_message 时,discord.py 会尝试传递 message,但无法传递。

@client.event
async def on_message(messagE):
    if message.author == client.user:
        return  

    if message.content.startswith('!hi') :
        await message.chAnnel.send('Hi!')
    if message.content.startswith('!goodbye') :
        await message.chAnnel.send('Goodbye!')

附带说明一下,我建议您查看 discord.ext.commands framework,它允许您创建命令,并且比使用 message.content.startswith() 及其变体更好。

大佬总结

以上是大佬教程为你收集整理的on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)全部内容,希望文章能够帮你解决on.message () 接受 0 个位置参数,但给出了 1 个(discord.py bot)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。