Команда установки присутствия / активности? - PullRequest
0 голосов
/ 09 июня 2019

Итак, мне было интересно, может ли быть какая-то команда, которую я мог бы написать, которая позволила бы мне установить присутствие и активность ботов (например, ~~ установить присутствие в режиме ожидания или ~~ установить активность, наблюдая за "люди, печатающие ~~ help") или что-то в этом роде.

Несвязанный вопрос: Как настроить команды, которые будут использоваться только мной?

Я не нашел пример кода для этого, и я новичок.

1 Ответ

0 голосов
/ 09 июня 2019

Вы можете использовать проверку is_owner, чтобы убедиться, что вы единственный человек, который может вызвать команду.

Чтобы изменить присутствие или статус бота, используйте метод change_presence:

from discord.ext.commands import Bot, is_owner
from discord import Status, Activity, ActivityType

bot = Bot("~~")

def getEnum(enum):
    def getter(arg):
        return enum[arg]
    return getter

@bot.group(invoke_without_command=True)
@is_owner()
async def set(ctx):
    await ctx.send("You must provide a subcommand.")

@set.command()
async def presence(ctx, status: getEnum(Status)):
    await bot.change_presence(status=status)

@set.command(invoke_without_command=True)
async def activity(ctx, type: getEnum(ActivityType), *, description):
    await bot.change_presence(activity=Activity(type=type, name=description))

@set.error
async def set_error(ctx, error):
    if isinstance(error, BadArgument):
        await ctx.send(error.message)
        await ctx.send(error.args)

bot.run("token")

Приведенное выше сообщение не будет выполнено автоматически, если вы попытаетесь предоставить нераспознанное имя для Status или ActivityType, вы также можете попробовать написать обработчик ошибок , чтобы получить некоторую обратную связь.

...