Получение содержимого сообщения с помощью Discord.py - PullRequest
0 голосов
/ 19 июня 2020

Я хотел бы иметь такую ​​команду, как $status idle, и она выполняла бы следующие

variblething = 'I am idle'
activity = discord.Game(name=variblething)
await client.change_presence(status=discord.Status.idle, activity=activity)

, тогда они могли бы сделать $message write what you want the status to be, тогда это изменило бы сообщение об активности. Надеюсь, все это имеет смысл. Мой текущий код следующий

import discord
client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('$helloThere'):
        await message.channel.send('General Kenobi')

1 Ответ

1 голос
/ 19 июня 2020

Во-первых, я настоятельно рекомендую вам использовать префиксы и декораторы / функции команд.

Это означает, что ваша функция on_message() не будет длиться милю. Чтобы установить префикс команды вашего бота, вы можете сделать:

from discord.ext import commands
bot = commands.Bot(command_prefix ='$')

Это позволит вам делать такие команды:

@bot.command()
async def changeStatus(ctx, *, status):

    if status == 'online':
        new_status = discord.Status.online
    elif status == 'offline':
        new_status = discord.Status.offline
    elif status == 'idle':
        new_status = discord.Status.idle
    elif status == 'dnd':
        new_status = discord.Status.dnd
    else:
        return

    await bot.change_presence(status=new_status, activity=discord.Game(f'I am {status}'))
...