discord.py - DM пользователю не отправляется - PullRequest
0 голосов
/ 06 мая 2020

Я делаю discord.Client. У меня есть команда DM, которая отправляет DM указанному пользователю c, но при запуске команды сообщение не отправляется пользователю, но сообщение отправляется на 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 Ответ

1 голос
/ 29 июля 2020

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