Ошибка при отправке сообщение человеку | discord.py
import discord, config, random
from discord.ext import commands
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='>', intents=intents)
@bot.command()
async def send_invite(ctx,max_age=0,max_uses=0):
days = max_age * 60
invite = await ctx.channel.create_invite(max_age=days,max_uses=max_uses)
await ctx.send(invite)
print(f"invite link = {invite}")
@bot.command()
async def invites(ctx, member):
day = 10 * 60 * 24
invite = await ctx.channel.create_invite(max_age=day,max_uses=1)
await member.send(f"Привет я тебя приглашаю на сервер {ctx.guild.name} ")
await member.send(f"ссылка {invite} у тебя есть время {day}")
bot.run(config.token)
Ошибка:
Traceback (most recent call last):
File "C:\Users\Msi_Pc\Desktop\ \1\venv\lib\site-packages\discord\ext\commands\core.py", line 229, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\Msi_Pc\Desktop\ \1\main.py", line 19, in invites
await member.send(f"Привет я тебя приглащаю на сервер {ctx.guild.name} ")
AttributeError: 'str' object has no attribute 'send'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Msi_Pc\Desktop\ \1\venv\lib\site-packages\discord\ext\commands\bot.py", line 1349, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\Msi_Pc\Desktop\ \1\venv\lib\site-packages\discord\ext\commands\core.py", line 1023, in invoke
await injected(*ctx.args, **ctx.kwargs) # type: ignore
File "C:\Users\Msi_Pc\Desktop\ \1\venv\lib\site-packages\discord\ext\commands\core.py", line 238, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'send'
Ответы (2 шт):
Автор решения: q r t s
→ Ссылка
Не совсем понятно что вы пытаетесь передать переменной member. Если вы хотите написать пользователю в ЛС, то вам необходимо получить пользователя, например:
member = ctx.author
Таким образом уже написать ему:
await member.send(#сообщение)
Автор решения: Baluk Ivan
→ Ссылка
Всё просто, добавьте аннотацию discord.Member к аргументу member команды invites, чтобы бот получал именно объект участника, а не его строковую версию как по-умолчанию.
@bot.command()
async def invites(ctx, member: discord.Member):
...

