Wie sendet man ( mit einem python bot ) eine dm an einen bestimmten user?

julihan41  01.04.2022, 14:42

Über welche API soll das laufen?

NoayHD 
Fragesteller
 01.04.2022, 15:37

discord.py

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Um den Nutzer (member) erst einmal ermitteln zu können, brauchst du gewisse Rechte. Lies dazu hier.

Sobald du die notwendige Einstellung im Discord-Konto vorgenommen hast, setzt du noch den Intent für deinen Client:

import discord

intents = discord.Intents.default()
intents.members = True

client = discord.Client(intents=intents)

Anschließend kannst du den Nutzer anhand seiner ID suchen und ihm mittels send eine Nachricht schicken.

user = client.get_user(id)
user.send(content="Some message ...")

Lies dazu auch hier:

user = await client.fetch_user(id)
channel = await user.create_dm()
await channel.send(Main.dc_text)

Das Wichtigste ist die ID des Users, den Du kontaktieren möchtest und dass der User einen Server mit Deinem Bot teilt.

Die ID kannst du folgendermaßen herausfinden:

async def on_message(self, message):
    if message.author == client.user:
        return
    print(message.author.id)

Sobald eine Nachricht in einen Server-Textchannel geschickt wird, printet das Programm dessen ID, vorrausgesetzt es ist nicht die des Bots.

Woher ich das weiß:eigene Erfahrung