python - 存在/活动设置命令?
问题描述
所以,我想知道是否可以编写一个命令,让我可以设置机器人的存在和活动(例如 ~~set Presence idle 或 ~~set activity 观看“人们打字~~帮助”)或类似的东西.
不相关的问题:如何设置仅供我使用的命令?
我还没有找到任何示例代码,我是初学者。
解决方案
您可以使用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
or提供无法识别的名称,上述操作将静默失败ActivityType
,您也可以尝试编写错误处理程序以提供一些反馈。
推荐阅读
- json - 合并数据集生成 Azure 数据工厂管道
- excel - 条件格式不适用于小于 TODAY(),仅适用于大于
- dc.js - Dc.js Boxplot 不创建轮廓
- python - 在直方图 matplotlib 的 x 轴上将月份数字切换为月份名称
- apache-spark - 在每个工作节点中,我们可以拥有多少个容器!以及我们可以在一个工作节点中拥有多少执行程序
- javascript - 乘法表打印到控制台
- c# - 在.net core api中返回后如何继续执行
- java - 当我使用离子库加载图像时,RecyclerView 元素重复
- css - 网络浏览器可以从网络字体渲染嵌入的位图吗?
- javascript - 无法绑定到“lazyLoad”,因为它不是“img”的已知属性 - Ionic 4 - ng-lazy-load