我正在创建一个命令,我只希望可以通过带有bot的DM执行该命令。当前代码可以将命令发送到任何通道,我想防止这种情况。
@client.command()
async def check(ctx, arg):
if discord.ChannelType.private:
await ctx.send(arg)
我也尝试过: discord.ChannelType == discord.ChannelType.private 和 discord.DMChannel
答案 0 :(得分:6)
在discord.py中,直接消息通道对象来自class discord.channel.DMChannel
。我们可以使用isinstance()
检查对象是否来自类:
@client.command()
async def check(ctx, arg):
if isinstance(ctx.channel, discord.channel.DMChannel):
await ctx.send(arg)
答案 1 :(得分:1)
添加dm_only
支票:
@client.command()
@commands.dm_only()
async def check(ctx, arg):
await ctx.send(arg)
答案 2 :(得分:0)
您可以尝试:
@client.command()
async def check(ctx, arg):
if ctx.guild is False:
await ctx.send(arg)
答案 3 :(得分:0)
我使用discord.py版本1.3.3,而createInstance()
对我不起作用。
我认为您应该使用不和谐类discord.ChannelType,这就是它的用途。
以下代码对我有用
IllegalArgumentException
答案 4 :(得分:0)
@client.command()
async def check(ctx, arg):
if str(ctx.type) == "private":
await ctx.send(arg)
https://discordpy.readthedocs.io/en/latest/api.html#discord.ChannelType