Python discord bot приветствие

Discord py: How to say hello to a new user?

Hello I am starting to program my first bot for discord in python, and I find myself with a small problem and it is that although it seems that the code is correct it seems that it is not doing anything at all. The idea is that the bot listens when a new user joins the server and then greets them on a specific channel This is the code: Edit: I have added the new code that I have right now, however the problem persists, the intirenances are also activated from the discord developer portal. I also want to add that the bot has an on_ready with a print («Is working») to check if the bot is started correctly.

import discord from discord.ext import commands from discord.utils import get intents = discord.Intents.default() intents.members = True #Bot prefix bot=commands.Bot(command_prefix='>', intents=intents) #Event @bot.event async def on_member_join(member): get(member.guild.channels, await channel.send(f" Welcome") ``` 

1 Answer 1

You need to enable intents.members

intents = discord.Intents.default() intents.members = True bot = commands.Bot(command_prefix='>', intents=intents) 

Also make sure to enable them in the developer portal

channel = bot.get_channel(id) # or channel = get(member.guild.channels, >So your code would look like this:
@bot.event async def on_member_join(member): channel = get(member.guild.channels, await channel.send(f' welcome') 

Источник

discord.py Project 2: Welcomer 👋🏽

In this article, you’re going to learn how to make a welcoming bot! It will send a welcome message to a specified channel with the user’s avatar and name!
To start, we need to initialize our bot. For this walkthrough, we can use discord.Client instead of commands.Bot, because we aren’t going to have any commands.

import discord client = discord.Client() 
import discord client = discord.Client() @client.event async def on_message_join(member): channel = client.get_channel(channel_id) embed=discord.Embed(title=f"Welcome member.name>", description=f"Thanks for joining member.guild.name>!") # F-Strings! embed.set_thumbnail(url=member.avatar_url) # Set the embed's thumbnail to the member's avatar image! await channel.send(embed=embed) 

Now run the code, grab an alt account or ask a friend to join the server, and boom! But wait. It doesn’t work!
That’s because we need the members intent enabled! After you’ve enabled the Privileged Intents in the dashboard, we need to enable them in the code!

import discord intents = discord.Intents.default() intents.members=True client = discord.Client(intents=intents) @client.event async def on_message_join(member): channel = client.get_channel(channel_id) embed=discord.Embed(title=f"Welcome member.name>", description=f"Thanks for joining member.guild.name>!") # F-Strings! embed.set_thumbnail(url=member.avatar_url) # Set the embed's thumbnail to the member's avatar image! await channel.send(embed=embed) 

What you’ve just done is told the discord.Client to ask for the Members intent when it starts up. Now it will be able to see member events. Now run the code to see the bot welcome the user!

Источник

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

phaggi

Необходимо исправить вопрос, обернуть код тегом code (см.п.3.8 правил). Кроме того, необходимо показать, как вы пытались решить проблему и что не получается. Иначе это не вопрос, а задание (см.п.5.12 правил).

я сначала пытался обычный код через
@bot.event
async def on_member_join(member)
await ctx.send(f'(текст)’)
но оно не получилось и не работало, но потом нашел код который позволяет отправлять сообщения в личные сообщения, но не знаю как его переделать
А как кодом обернуть я не понял, то как я знаю не работает
Ну если смотреть по правилам п.5.12 то этот как раз таки вопрос поможет многим, так как нигде нет такого вопроса и поможет многим разобраться с данной проблемой.

phaggi

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='К твоему прочтению обязателен канал . (Галочка в конце)', inline=False) emb.add_field(name="Также чтоб не было притензий и разногласий", value='Тебе необходимо прочитать канал ', inline=False) emb.add_field(name= "Команды бота", value='Чтоб узнать подробнее команды пропиши !help в канале ', inline=False) emb.set_author(name=f'#', icon_url=member.avatar_url) #emb.set_footer(text=f'Ваш ID: • :') await member.send(embed = emb)

MrShandy

@bot.event async def on_member_join(member): await member.send("text")

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

@bot.event() async def on_member_join(member): emb = discord.Embed(title='Добро пожаловать на DrainProject', color=0xff0000) await ctx.channel.purge(limit=0) emb.add_field(name="Если не знаешь что делать", value='К твоему прочтению обязателен канал . (Галочка в конце)', inline=False) emb.add_field(name="Также чтоб не было притензий и разногласий", value='Тебе необходимо прочитать канал ', inline=False) emb.add_field(name= "Команды бота", value='Чтоб узнать подробнее команды пропиши !help в канале ', inline=False) emb.set_thumbnail(url=member.avatar_url) emb.set_author(name=ctx.message.author, icon_url=ctx.message.author.avatar_url) await member.send(embed = emb)

MrShandy

MrShandy

y0uSh4, потому что, как я уже объяснил выше, у тебя нет переменной ctx. Ты же пытаешься удалить неведомое сообщение и взять данные пользователя из нее. Удали удаление сообщений и переделай set_author

62776f5a0c160978289587.png

Для тех кто думает что эмбеды нельзя отправить вот скрин с эмбедом.

@bot.event() async def on_member_join(member): emb = discord.Embed(title='Добро пожаловать на DrainProject', color=0xff0000) await ctx.channel.purge(limit=0) emb.add_field(name="Если не знаешь что делать", value='К твоему прочтению обязателен канал . (Галочка в конце)', inline=False) emb.add_field(name="Также чтоб не было притензий и разногласий", value='Тебе необходимо прочитать канал ', inline=False) emb.add_field(name= "Команды бота", value='Чтоб узнать подробнее команды пропиши !help в канале ', inline=False) emb.set_thumbnail(url=member.avatar_url) emb.set_author(name=ctx.message.author, icon_url=ctx.message.author.avatar_url) await member.send(embed = emb)

MrShandy

Shandy, я просто попросил помочь спросить что не так и как его сделать правильным, в этом коде нет удаления сообщения

MrShandy

y0uSh4, python учить надо, чтобы понимать. Твой код переделывать не буду, все указания как исправить написал.

@bot.event async def on_member_join(member): now = datetime.now() emb = discord.Embed(title='Добро пожаловать на DrainProject', color=0xff0000) emb.add_field(name="Если не знаешь что делать", value='К твоему прочтению обязателен канал . (Галочка в конце)', inline=False) emb.add_field(name="Также чтоб не было притензий и разногласий", value='Тебе необходимо прочитать канал ', inline=False) emb.add_field(name= "Команды бота", value='Чтоб узнать подробнее команды пропиши !help в канале ', inline=False) emb.set_thumbnail(url=member.avatar_url) embed.set_author(name=f'#', icon_url=member.avatar_url) embed.set_footer(text=f'Ваш ID: • :') await member.send(embed = emb)
@bot.event async def on_member_join(member): now = datetime.now() embed = discord.Embed( title='Добро пожаловать на "Тестовый сервер"!', description='', color=0x0000FF ) embed.set_author(name=f'#', icon_url=member.avatar_url) embed.set_footer(text=f'Ваш ID: • :') await member.send(embed=embed)
import asyncio import discord from discord.ext import commands import config from config import settings import datetime from datetime import datetime

Источник

Как сделать бота на python. Туториал, часть 1

Всем привет! Это мой первый пост на Хабре, и в нём я попытаюсь научить делать вас ботов для Discord на языке Python. Итак, приступим.

Первое, что нам нужно сделать, это установить нужные библиотеки и сам питон.

Шаг 1.

После успешно установки нажимаем сочетание клавиш «win» + «r», в открывшемся окошке вводим cmd

В открывшемся окне пишем «pip install discord», ждём когда всё установится, затем прописываем «pip install discord.py».

Шаг 2. Создаём аккаунт нашему боту

  1. Переходим на портал разработчиков Discord
  2. Cоздаём приложение
  3. Переходим во вкладку «Bot», там нажимаем кнопку «Add bot»
  4. В разделе Privileged Gateway Intents включаем SERVER MEMBERS INTENT и PRESENCE INTENT
  5. Возле аватара нашего бота ищем надпись Token, под ней нажимаем кнопку copy.

Шаг 3. Теперь мы можем перейти к написанию кода

Создаём где нибудь на диске папку.

Я назову её bot. Создаём в ней файл нашего бота с форматом .py, его можно называть как угодно, но я назову его bot. Чем проще тем лучше)

Теперь можно написать первые строчки кода.

# Импортируем нужные библиотеки import discord import random import asyncio # прежде чем написать это, проделайте шаг 1, только вместо discord и discord.py установите asyncio. from discord.ext import commands from discord import Embed from discord.ext.commands import Bot from asyncio import sleep intents = discord.Intents.all() #Выдаём наши боту намерения, это пригодится вам, когда вы будет делать приветствие новых людей на сервере и прочее. bot = commands.Bot(command_prefix = PREFIX, intents=intents) # Там где 'PREFIX' ставьте свой префикс по желанию. У меня это будет "-" #Пишем первую команду. @bot.command() #создаём команду async def say(ctx, *, arg): # "*, arg" arg - это переменная аргумента в сообщении, а * перед ней обозначает, что всё сообщение целиком будет являться аргументом await ctx.message.delete() #Удаляем сообщение автора команды await ctx.send(arg) #Отправляем сообщение автора команды от имени бота. #Теперь запускаем нашего бота bot.run(TOKEN) # там где TOKEN, токен, который мы скопировали с портала разработчиков.

После этого открываем файл с помощью Python’а и ваш бот должен появиться в сети.

Надеюсь, что у вас всё получилось без труда, и вы не просто всё скопировали, а пытались понять, что да как

Удачи вам, с вами был klikis(polyhedron).

Если я что-то забыл написать, или вам что-то не понятно, то пишите в комментарии. Увидимся в следующей части!

P.S. Не бейте за оформление)

Источник

Читайте также:  Tic tac toe cpp
Оцените статью