我怎样才能显示我的机器人是谁在私信而不能私信。 (discord.py)
How can I show who my bot is DMing and cannot DM. (discord.py)
我知道这个问题措辞不正确或者可能没有任何意义,所以我将提供一些关于我正在尝试做的事情的背景和信息...
上下文
我正在尝试创建一个机器人,向我服务器中的每个人发送 DM 以提醒他们这样那样,我已经掌握了如何执行此操作的代码,但我无法弄清楚如何让它显示,谁机器人是 DMing 而不是 DMing。
我已经研究了很多,但还没有找到让我来到这里的解决方案。
问题
我怎样才能显示我的机器人是谁在私信而不能私信。 (该机器人确实做了它应该做的事情,根据请求向服务器中的每个人发送 DM,但我希望它通过 terminal/pycharm/IDE.
显示
例如:用户#1000 已成功向用户#2000 发送消息!
import discord
import os, time, random
from discord.ext import commands
from lol import token
client = discord.Client()
intents = discord.Intents.all()
client = commands.Bot(command_prefix="!", intents=intents, self_bot = True)
@client.event
async def on_ready():
print("Ready!")
@client.command()
async def dm_all(ctx, *, args=None):
if args != None:
members = ctx.guild.members
for member in members:
try:
await member.send(args)
await print(ctx.discriminator.author)
except:
print("Unable to DM user because the user has DMs off or this is a bot account!")
else:
await ctx.send("Please provide a valid message.")
client.run(token, bot=True)
这里有一些重要的事情要知道:
如果用户无法收到 DM,则会出现 Forbidden
错误。
您可以使用 except
语句记录这些错误并在控制台中显示它们。
大多数情况下您无法向机器人发送直接消息,然后您会收到 HTTPException
错误。
看看下面的代码:
@client.command()
async def dm_all(ctx, *, args=None):
if args is not None:
members = ctx.guild.members
for member in members:
try:
await member.send(args)
print(f"Sent a DM to {member.name}")
except discord.errors.Forbidden:
print(f"Could not send a DM to: {member.name}")
except discord.errors.HTTPException:
print(f"Could not send a DM to: {member.name}")
else:
await ctx.send("Please provide a valid message.")
输出:
Sent a DM to Dominik
Could not send a DM to: BotNameHere
- 当然你可以根据自己的意愿定制
member.name
。
参考:
https://discordpy.readthedocs.io/en/latest/api.html?highlight=forbidden#discord.Forbidden
我知道这个问题措辞不正确或者可能没有任何意义,所以我将提供一些关于我正在尝试做的事情的背景和信息...
上下文
我正在尝试创建一个机器人,向我服务器中的每个人发送 DM 以提醒他们这样那样,我已经掌握了如何执行此操作的代码,但我无法弄清楚如何让它显示,谁机器人是 DMing 而不是 DMing。 我已经研究了很多,但还没有找到让我来到这里的解决方案。
问题 我怎样才能显示我的机器人是谁在私信而不能私信。 (该机器人确实做了它应该做的事情,根据请求向服务器中的每个人发送 DM,但我希望它通过 terminal/pycharm/IDE.
显示例如:用户#1000 已成功向用户#2000 发送消息!
import discord
import os, time, random
from discord.ext import commands
from lol import token
client = discord.Client()
intents = discord.Intents.all()
client = commands.Bot(command_prefix="!", intents=intents, self_bot = True)
@client.event
async def on_ready():
print("Ready!")
@client.command()
async def dm_all(ctx, *, args=None):
if args != None:
members = ctx.guild.members
for member in members:
try:
await member.send(args)
await print(ctx.discriminator.author)
except:
print("Unable to DM user because the user has DMs off or this is a bot account!")
else:
await ctx.send("Please provide a valid message.")
client.run(token, bot=True)
这里有一些重要的事情要知道:
如果用户无法收到 DM,则会出现
Forbidden
错误。您可以使用
except
语句记录这些错误并在控制台中显示它们。大多数情况下您无法向机器人发送直接消息,然后您会收到
HTTPException
错误。
看看下面的代码:
@client.command()
async def dm_all(ctx, *, args=None):
if args is not None:
members = ctx.guild.members
for member in members:
try:
await member.send(args)
print(f"Sent a DM to {member.name}")
except discord.errors.Forbidden:
print(f"Could not send a DM to: {member.name}")
except discord.errors.HTTPException:
print(f"Could not send a DM to: {member.name}")
else:
await ctx.send("Please provide a valid message.")
输出:
Sent a DM to Dominik
Could not send a DM to: BotNameHere
- 当然你可以根据自己的意愿定制
member.name
。
参考: https://discordpy.readthedocs.io/en/latest/api.html?highlight=forbidden#discord.Forbidden