我正在制作discord.Client
。我有一个DM
命令,它将DM发送给特定用户,但是运行该命令时没有消息发送给该用户,而是在Context.channel
上发送了消息。
这是我的代码:
import discord, asyncio
app = discord.Client()
@app.event
async def on_message(message):
if message.content.startswith('!DM'):
usernotsending = []
content = message.content
msg = await message.channel.send('메시지를 보내고 있습니다!')
i = app.user
# 봇의 모든 유저를 for문으로 적용
for i in app.user:
try:
if i == app.user:
return
# 해당 유저의 DM을 염
await i.create_dm()
# 내용전송
await app.dmchannel.send(content)
# DiscordAPI 에서 오류가 발생했을경우
except discord.HTTPException:
# DM을 보내지 못한 유저 태그 list에 저장
usernotsending.append(f'{i.name}#{i.discriminator}')
messageing = """
아래 유저들에게 메시지를 전송하지 못했습니다!
직접 보내주시거나, 따로 전달을 해드려야됩니다!
"""
for msg in usernotsending:
# message 에 유저 태그 추가
messageing += msg
# 메시지 전송
await msg.edit(content=messageing)
答案 0 :(得分:1)
Context
只是commands.Bot
实例的一部分。您的代码和说明似乎不匹配。假设您要向作者DM:
import discord
app = discord.Client()
@app.event
async def on_message(message):
if message.content.startswith('!DM'):
try:
await message.author.send(...)
except discord.HTTPException:
...
如果您想让所有人都DM,则该机器人可以看到:
import discord
app = discord.Client()
@app.event
async def on_message(message):
if message.content.startswith('!DM'):
for user in app.users:
try:
await user.send(...)
except discord.HTTPException:
...