#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я пытаюсь написать Discord-бота в discord.py он просто реагирует на команды, например, когда вы вводите =!firewall, он говорит Привет! Вот мой код:
import discord
from discord.ext import commands
TOKEN = ('')
client = discord.Client()
bot = commands.Bot(command_prefix='=!')
@bot.event
async def on_ready():
print('Bot ready')
@bot.event
async def on_message(message):
if message.author == client.user:
return
@bot.command(pass_context=True)
async def chickennuggets(ctx):
await message.channel.send("Hello!")
await bot.process_commands(message)
bot.run(TOKEN)
Однако, когда я пытаюсь запустить команду с =!firewall в Discord, консоль возвращает это:
Ignoring exception in on_message
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "/Users/pixdoet/Code/python/firewall/bottest.py", line 19, in on_message
async def chickennuggets(ctx):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/ext/commands/core.py", line 1257, in decorator
self.add_command(result)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/ext/commands/core.py", line 1143, in add_command
raise CommandRegistrationError(command.name)
discord.ext.commands.errors.CommandRegistrationError: The command chickennuggets is already an existing command or alias.
Как это довольно очевидно, chickennuggets не является командой по умолчанию или командой, используемой любыми другими библиотеками в Python. Я искал это в Интернете, но безрезультатно. Пожалуйста, помогите. Спасибо!
Ответ №1:
Прежде всего, вы ссылаетесь на свою команду chickennuggets
с другим именем в своем сообщении, что говорит мне о том, что вы используете псевдоним для команды в своем коде. Однако вы не указали псевдоним или то, как вы его определяете. Ваш отступ в вашем коде также неверен. Попробуйте это:
import discord
from discord.ext import commands
client = discord.Client()
bot = commands.Bot(command_prefix='=!')
@bot.event
async def on_ready():
print('Bot ready')
@bot.event
async def on_message(message):
if message.author == client.user:
return
await bot.process_commands(message)
@bot.command(pass_context=True, aliases = ['firewall'])
async def chickennuggets(ctx):
await ctx.send("Hello!")
TOKEN = ('') # insert your token here
bot.run(TOKEN)
Кроме того, пожалуйста, не сливайте токен вашего бота на какой-либо общедоступный форум, потому что другие могут запускать свой код через вашего бота, используя токен вашего бота. Теперь вам нужно будет перейти к вашему приложению на портале разработчика Discord и сгенерировать новый токен. Это приведет к обнулению вашего предыдущего токена, чтобы никто не мог использовать его для запуска своего кода на вашем боте.
Комментарии:
1. Спасибо за ваш ответ, но клиент фактически используется в client.user
2. Упс, пропустил это.
3. Вместо использования
client.user
usebot.user
. Вы запускаете экземпляр бота, а не клиент. Также зачем определять оба? В этом нет смысла