В discord.py вы не можете напрямую получить информацию о том, кто пригласил пользователя на сервер, потому что это не является непосредственным событием. Однако вы можете использовать аудит-логи сервера, чтобы получить информацию о приглашении пользователя.
Вот пример кода, который отправляет сообщение в определенный канал при заходе нового пользователя на сервер:
```python
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_member_join(member):
channel = bot.get_channel(1234567890) # Замените на ID канала, куда хотите отправлять сообщения
inviter = await get_inviter(member)
message = f"Привет, {member.mention}! Добро пожаловать на сервер!"
if inviter:
message += f" Тебя пригласил {inviter.mention}"
await channel.send(message)
async def get_inviter(member):
guild = member.guild
async for entry in guild.audit_logs(limit=1, action=discord.AuditLogAction.invite_create):
if entry.target.code == member.guild.me.avatar.guild.invite.code: # Замените на код бота
return entry.user
return None
bot.run('YOUR_BOT_TOKEN')
```
Здесь `get_inviter` использует аудит-логи сервера для получения информации о создании приглашения и ищет приглашение, которое совпадает с кодом вашего бота. Затем он возвращает пользователя, создавшего приглашение (inviter).
Обратите внимание, что вам необходимо заменить `1234567890` на ID канала, в который вы хотите отправлять сообщения, и `YOUR_BOT_TOKEN` на токен вашего бота.