Задать вопрос
@y0uSh4

Как отправить приветственное сообщение новому пользователю Discord.py?

Есть приветствие по команде:

@bot.command()
@commands.has_permissions(administrator=True)
async def hello(ctx,member:discord.Member):
        await ctx.message.delete()
        emb = discord.Embed(title='Добро пожаловать на DrainProject', color=0xff0000)
        await ctx.channel.purge(limit=0)
        emb.add_field(name="Если не знаешь что делать", value='К твоему прочтению обязателен канал <#965359487416418306>. (Галочка в конце)', inline=False)
        emb.add_field(name="Также чтоб не было притензий и разногласий", value='Тебе необходимо прочитать канал <#927297696761528392>', inline=False)
        emb.add_field(name= "Команды бота", value='Чтоб узнать подробнее команды пропиши !help в канале <#972431181624791060>', inline=False)
        emb.set_thumbnail(url=member.avatar_url)
        emb.set_author(name=ctx.message.author, icon_url=ctx.message.author.avatar_url)
        await ctx.author.send(embed = emb)
        msg = await ctx.send(('***Приветственное сообщение было отправленно в личные сообщения.***'))
        await asyncio.sleep(30)
        await msg.delete()

Как сделать так, чтобы приветствие отправлялось автоматически новому пользователю?
  • Вопрос задан
  • 1783 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@y0uSh4 Автор вопроса
Мне помогли, всем начинающим которые начинают писать ботов, вот вам код, знаю многие будут искать.
import discord
from discord import utils
from discord.ext import commands
import config
from config import settings
intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix=settings['prefix'],  intents=intents)
@bot.event
async def on_member_join(member):
    #now = datetime.now()
    emb = discord.Embed(title='Добро пожаловать на DrainProject', color=0xff0000)
    emb.add_field(name="Если не знаешь что делать", value='К твоему прочтению обязателен канал <#965359487416418306>. (Галочка в конце)', inline=False)
    emb.add_field(name="Также чтоб не было притензий и разногласий", value='Тебе необходимо прочитать канал <#927297696761528392>', inline=False)
    emb.add_field(name= "Команды бота", value='Чтоб узнать подробнее команды пропиши !help в канале <#972431181624791060>', inline=False)
    emb.set_author(name=f'{member.name}#{member.discriminator}', icon_url=member.avatar_url)
    #emb.set_footer(text=f'Ваш ID: {member.id} • {now.hour}:{now.minute}')
    await member.send(embed = emb)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MrShandy
@MrShandy
Python
@bot.event
async def on_member_join(member):
    await member.send("text")

Как то так должно быть.
В комментариях вы показали пример вашего кода, но вы пытались отправить сообщение в Context (ctx), но в событии мо входом участника передается только аргумент member, который содержит новоприбывшего участника. Советую почитать документацию к библиотеке и изучить python для понимания таких простых вещей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы