discord.py-没有DM发送给用户

时间:2020-05-06 05:00:50

标签: python python-3.x discord discord.py discord.py-rewrite

我正在制作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)

1 个答案:

答案 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:
                ...