首页 > 解决方案 > 存在/活动设置命令?

问题描述

所以,我想知道是否可以编写一个命令,让我可以设置机器人的存在和活动(例如 ~~set Presence idle 或 ~~set activity 观看“人们打字~~帮助”)或类似的东西.

不相关的问题:如何设置仅供我使用的命令?

我还没有找到任何示例代码,我是初学者。

标签: pythonpython-3.xdiscord.pydiscord.py-rewrite

解决方案


您可以使用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")

如果您尝试向Statusor提供无法识别的名称,上述操作将静默失败ActivityType,您也可以尝试编写错误处理程序以提供一些反馈。


推荐阅读