gpt4 book ai didi

python - Discord.py 模块 Python 3.6.4 踢功能

转载 作者:行者123 更新时间:2023-12-01 09:14:36 25 4
gpt4 key购买 nike

我正在使用Python中的discord模块制作一个discord机器人...我在尝试使kick命令工作时遇到了很多麻烦。我尝试使用 bot.kick、client.kick 和 ctx.kick,但它们都给出相同的错误,即:

Ignoring exception in command kick:
Traceback (most recent call last):
File "C:\Users\user\AppData\Roaming\Python\Python36\site-packages\discord\ext\commands\core.py", line 62, in wrapped
ret = yield from coro(*args, **kwargs)
File "C:\Users\user\Desktop\Code\bot.py", line 44, in kick
await client.kick(user)
AttributeError: 'Client' object has no attribute 'kick'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\user\AppData\Roaming\Python\Python36\site-packages\discord\ext\commands\bot.py", line 886, in invoke
yield from ctx.command.invoke(ctx)
File "C:\Users\user\AppData\Roaming\Python\Python36\site-packages\discord\ext\commands\core.py", line 493, in invoke
yield from injected(*ctx.args, **ctx.kwargs)
File "C:\Users\user\AppData\Roaming\Python\Python36\site-packages\discord\ext\commands\core.py", line 71, in wrapped
raise CommandInvokeError(e) from e
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Client' object has no attribute 'kick'

我尝试搜索与我遇到的问题相关的各种不同的 YouTube 视频和帖子,但似乎没有人能找到解决方案。我写了下面的代码。如果您发现我遗漏的任何错误,请告诉我。

import time
import random
import discord
import asyncio
from discord.ext import commands

#Initialize
client = discord.Client()#Creates Client
bot = commands.Bot(command_prefix='!')#Sets prefix for commands(!Command)

@bot.event
async def on_ready():
print('Name:', end=' ')
print(bot.user.name)
print('ID: ')
print(bot.user.id)

@bot.command(pass_context=True)
async def user_info(ctx, user: discord.Member):
await ctx.send(f'The username of the user is {user.name}')
await ctx.send(f'The ID of the user is {user.id}')
await ctx.send(f'The status of the user is {user.status}')
await ctx.send(f'The role of the user is {user.top_role}')
await ctx.send(f'The user joined at {user.joined_at}')

@bot.command(pass_context=True)
async def kick(ctx, user: discord.Member):
await ctx.send(f'The Kicking Hammer Has Awoken! {user.name} Has Been Banished')
await client.kick(user)

bot.run('SECRET')
client.run('SECRET')

最佳答案

您似乎正在使用较新的 discord.py 1.0,也称为重写分支。 You should read this ,这是该交换机中所做的许多重大更改的文档。您还应该仅引用该文档,因为旧版 0.16 版本的大多数文档都不兼容。

许多东西都从 Client 移到了更有意义的地方。具体来说,kick 现在是 Guild 的一种方法。

import asyncio
from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.event
async def on_ready():
print('Name:', end=' ')
print(bot.user.name)
print('ID: ')
print(bot.user.id)

@bot.command(pass_context=True)
async def user_info(ctx, user: discord.Member):
await ctx.send(f'The username of the user is {user.name}')
await ctx.send(f'The ID of the user is {user.id}')
await ctx.send(f'The status of the user is {user.status}')
await ctx.send(f'The role of the user is {user.top_role}')
await ctx.send(f'The user joined at {user.joined_at}')

@bot.command(pass_context=True)
async def kick(ctx, user: discord.Member):
await ctx.send(f'The Kicking Hammer Has Awoken! {user.name} Has Been Banished')
await ctx.guild.kick(user)

bot.run('secret')

请注意,我还删除了上面对 client 的所有引用。 BotClient的子类,因此您可以通过Bot访问所有Client方法。

关于python - Discord.py 模块 Python 3.6.4 踢功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51369259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com