python - 名称“create_dm”未定义
问题描述
用户被踢出服务器后如何向用户发送消息?每当我尝试以下代码时,它都无法正常工作。
import discord
from discord.ext import commands
intents = discord.Intents(messages=True, guilds=True, reactions=True, members=True,presences=True,guild_messages=True)
client = commands.Bot(command_prefix="!dc ", intents=intents)
@client.event
async def on_ready():
print("I am ready!")
@client.command(aliases=["ban"])
@commands.has_role("admin")
async def ban_user(self,ctx, member: discord.Member, *, reason=None):
await member.ban(reason=reason)
await ctx.send(f"{member} has been kicked from server.")
dm_channel = await create_dm(member) #These two code lines are where I got this error
await dm_channel.send("You've been banned from the server.You won't join the server until admin opens your ban.")
@commands.command(aliases=["kick"])
@commands.has_role("admin")
async def kick_user(self,ctx, member: discord.Member, *, reason=None):
await member.kick(reason=reason)
await ctx.send(f"{member} has been kicked from the server.")
client.run(myToken)
解决方案
根据您的问题,我假设您想要 dm 被禁止的用户。为此,您可以,
async def ban(self, ctx, member: discord.Member, *, reason=None):
await ctx.send(f'{member} has banned from the server.') # sends the message in the server
await member.send(f'You have been banned from {member.guild.name}.') #dms the member that he has been banned.
await member.ban(reason = reason) #bans the user from the server.
注意:如果你先封禁会员,然后再尝试在服务器和dm中发送消息,你会得到一个错误,因为找不到该会员。
推荐阅读
- ruby-on-rails - Rails - 如何编写一个链接,该链接将被调用以在控制器中调用带有参数的操作?
- angular - Angular CLI/Webpack 将样式添加到正文而不是头部
- docker - ansible docker挂载多个端口
- reactjs - 如何在列表的列表项中的材质 ui 图标之间添加垂直连接线?
- angular - 在 Scroll Angular 6 上触发 ngFor 动画
- powershell - 按添加顺序导出数据 - PowerShell Export-Csv
- ubuntu - Hive shell 没有启动
- css - Scrapy:抓取正则表达式匹配的兄弟元素
- html - 如何编码一些原子的原子序数和原子质量序数
- ios - UIBARBUTTON 后退动作