Как задать любой тип переменной?
Работаю фрилансером. Принял заказ на discord.py. Но не работает функция member.send(), потому что member = str (из консоли), а надо, чтобы member = discord.Member. Как сделать? Я знаю, что так можно сделать в аргументах в функции (ctx, member: discord.Member), но как это сделать просто в коде? Помогите, пожалуйста. Ошибка:
Ignoring exception in command start:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/ext/commands/core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "/Users/antongorestov/Desktop/kwork_self_discord.py", line 25, in start
await member.send("уи.")
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/abc.py", line 1013, in send
channel = await self._get_channel()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/member.py", line 299, in _get_channel
ch = await self.create_dm()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/member.py", line 142, in general
return await getattr(self._user, x)(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/user.py", line 764, in create_dm
data = await state.http.start_private_message(self.id)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/http.py", line 254, in request
raise HTTPException(r, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50007): Cannot send messages to this user
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/ext/commands/core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: HTTPException: 400 Bad Request (error code: 50007): Cannot send messages to this user
Код:
@client.command()
async def start(ctx):
print('START')
members = ctx.guild.members
for member in members:
member = discord.Member(member)
try:
await member.send("уи.")
except:
continue
else:
print('Отправилось!')
Ответы (1 шт):
Автор решения: Corrygan
→ Ссылка
Если нужно обратиться ко всем участникам сервера:
@client.command()
async def start(ctx):
print('START')
for member in ctx.guild.members
try:
await member.send("уи.")
except:
continue
else:
print('Отправилось!')
Если нужно обратиться к какому-то определённому учатснику, получите объект участника с помощью discord.utils.get()
@client.command()
async def start(ctx):
print('START')
member = discord.utils.get(ctx.guild.member, id=ид участника, можно получить объект по имени, тогда используйте name=имя)
try:
await member.send("уи.")
except:
continue
else:
print('Отправилось!')
Надеюсь, я правильно понял, что нужно.