Входные сообщения в Discord.py - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь найти способ запрограммировать моего бота на очистку определенного c количества сообщений в канале. Однако я не знаю, как заставить моего бота запускать свой код на основе данных, введенных пользователем. Например, предположим, что я пользователь, который хочет удалить определенное c количество сообщений, например, скажем, 15 сообщений. Я хочу, чтобы мой бот очистил ровно 15 сообщений, не больше и не меньше. Как мне это сделать?

    if message.content == "{clear":
    await message.channel.send("Okay")
    await message.channel.send("How many messages should I clear my dear sir?")

Это git все, что у меня есть lmao. Мне очень жаль, что я так разочаровал это сообщество; (

1 Ответ

0 голосов
/ 12 июля 2020

Используя событие on_message, вам нужно будет использовать метод startswith и создать переменную amount, которая принимает содержимое вашего сообщения без {clear в качестве значения:

if message.content.startswith("{clear"):
    amount = int(message.content[7:])
    await message.channel.purge(limit=amount+1)

Однако я не рекомендую использовать события on_message для создания команд. Вы можете использовать структуру commands из discord.py. Вам будет намного проще создавать команды.
Быстрый пример:

from discord.ext import commands

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

@bot.event
async def on_ready():
    print("Bot's ready to go")

@bot.command(name="clear")
async def clear(ctx, amount: int):
    await ctx.channel.purge(limit=amount+1)

bot.run("Your token")

ctx позволит вам получить доступ к сообщению author, channel , guild, ... и позволит вам вызывать такие методы, как send, ...

...