discord.py Отправка DM через консоль python

#python #python-3.x #discord #discord.py

#python #python-3.x #Discord #discord.py

Вопрос:

Я пытаюсь отправить сообщение через консоль python. Прямо сейчас у меня все работает, когда я устанавливаю его как команду бота (когда я выполняю команду !dm , в консоли python мне предлагается ввести идентификатор пользователя и сообщение, которое я хочу отправить DM. Все это работает. Однако то, что я пытаюсь сделать, это чтобы программа запрашивала меня, как только она запускается.

Мой текущий код:

 @bot.command(name='dm')
async def messageinput(ctx):
    member = input('Enter Member ID: ')
    message = input('Enter Message: ')
    print(member)
    print(message)
    user = bot.get_user(int(member))
    await user.send(message)

@bot.event
async def on_ready():
    #await verifyloop()
    print(Fore.CYAN   '|------------------------------------------|')
    print(Fore.CYAN   '|--------------Bot is online!--------------|')
    print(Fore.CYAN   '|------------------------------------------|')
    
    #await messageinput()
 

Как мне это сделать?

Ответ №1:

Чтобы получить участника discord, используя его идентификатор в on_ready() функции, вы делаете это:

 await client.fetch_user(USER_ID)
 

Где USER_ID идентификатор пользователя (целочисленное значение).


Итак, ваше событие будет выглядеть так:

 @bot.event
async def on_ready():
    print(Fore.CYAN   '|------------------------------------------|')
    print(Fore.CYAN   '|--------------Bot is online!--------------|')
    print(Fore.CYAN   '|------------------------------------------|')

    member = int(input('Enter Member ID: '))
    message = input('Enter Message: ')

    user = await bot.fetch_user(member)
    await user.send(message)
 

Комментарии:

1. Как я уже сказал, у меня это уже работает как команда бота. Однако я хочу, чтобы он запрашивал меня при запуске программы (поэтому мне не нужно открывать discord.

2. @ENORMOUZ дайте мне секунду, чтобы отредактировать мой ответ.

3. @ENORMOUZ ты можешь попробовать это?

Ответ №2:

Не используйте print, print отправляет сообщение на консоль, используйте ctx.send вместо этого, для получения дополнительной информации ознакомьтесь с discord.py документация.

Пример:

 ctx.send("Sending this to the designated channel on Discord")
 

Комментарии:

1. Как я уже сказал, у меня это уже работает как команда бота. Однако я хочу, чтобы он запрашивал меня при запуске программы (поэтому мне не нужно открывать discord.