#python #python-3.x #discord.py
#python #python-3.x #discord.py
Вопрос:
import discord
from discord.ext.commands import Bot
bot = Bot(command_prefix='!')
TOKEN = 'TOKEN GOES HERE'
@bot.event
async def on_ready():
print(f'Bot connected as {bot.user}')
await bot.change_presence(activity = discord.Game('SAO'))
#Bellow this it the trouble part
@bot.command(name='test')
async def on_message(message):
if message.content == 'test':
await message.channel.send('Testing 1 2 3!')
await bot.process_commands(message)
bot.run(TOKEN)
Мне нужна помощь, чтобы он отображал ‘Test 1 2 3!’ при вводе ‘!test’? Почему, черт возьми, так сложно опубликовать, им нужно больше деталей, но я не знаю, что еще вам сказать.
Комментарии:
1. Убедитесь, что вы не выдаете свой токен. Надеюсь, discord отсканировал сообщение и сбросил ваш токен.
Ответ №1:
Сообщение приходит полностью так, как вы его ввели. Вы проверяете, ввел ли пользователь «тест». Возможно, измените свой оператор if на:
if message.content == "!test":
Комментарии:
1. Есть ли другой способ сделать это
2. На самом деле нет, есть тактика, которую вы можете использовать, чтобы упростить задачу. Например, с помощью метода startswith для проверки, является ли это командной строкой. Пример:
message.content.startswith("!")
.3. можете ли вы отправить код, демонстрирующий, как это сделать?
4. Вы можете проверить, распечатав его сразу после
on_message
объявления :print(message.content.startswith("!"))
. Вы также можете протестировать его из строкового литерала:print("!this-is-true".startswith("!")
иprint("this-is-false!".startswith("!")
Ответ №2:
Вы смешиваете commands
с events
, on_message
это событие, а не команда. согласно вашему примеру, вы должны использовать команды. Вот пример
Команда
#Run this using !test
@bot.command()
async def test(ctx):
await ctx.send('Testing 1 2 3!')
Событие
@bot.event
async def on_message(message):
if message.content == 'hey':
await message.channel.send('Hello')
await bot.process_commands(message)