Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Пишу собственного крашбота на disnake asyncio requests, но функция спама в личные сообщения не работает помогите

‘gothica ‘kadrov Ученик (110), на голосовании 2 месяца назад
вот сам код
async def spam_ls(ctx, member: disnake.member):
await ctx.message.delete()

while True:
try:
await member.send(content="""ТЕКСТ ДЛЯ СПАМА""")
except:
continue

---------

А ошибку выдаёт такую:
Ignoring exception in command spam_ls:
Traceback (most recent call last):
File "E:\python\Lib\site-packages\disnake\ext\commands\bot_base.py", line 581, in invoke
await ctx.command.invoke(ctx)
File "E:\python\Lib\site-packages\disnake\ext\commands\core.py", line 904, in invoke
await self.prepare(ctx)
File "E:\python\Lib\site-packages\disnake\ext\commands\core.py", line 838, in prepare
await self._parse_arguments(ctx)
File "E:\python\Lib\site-packages\disnake\ext\commands\core.py", line 744, in _parse_arguments
transformed = await self.transform(ctx, param)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\python\Lib\site-packages\disnake\ext\commands\core.py", line 568, in transform
raise MissingRequiredArgument(param)
disnake.ext.commands.errors.MissingRequiredArgument: member is a required argument that is missing.
Голосование за лучший ответ
3681 Просветленный (20338) 3 месяца назад
Проблема заключается в том, что ты не передаёшь обязательный аргумент member при вызове команды spam_ls.
Убедись, что равильно вызываешь команду, указывая участника:
 !spam_ls @username 
Измени определение функции, чтобы использовать конвертер disnake.Member:
 @bot.command() 
async def spam_ls(ctx, member: disnake.Member):
await ctx.message.delete()

while True:
try:
await member.send(content="ТЕКСТ ДЛЯ СПАМА")
except disnake.errors.HTTPException:
print(f"Не удалось отправить сообщение пользователю {member.name}")
break
except Exception as e:
print(f"Произошла ошибка: {e}")
break
Добавь обработку ошибок, чтобы избежать бесконечного цикла и предоставить информацию о проблемах.
Рассмотри возможность добавления задержки между сообщениями, чтобы избежать ограничений Discord на отправку сообщений:
 import asyncio 

@bot.command()
async def spam_ls(ctx, member: disnake.Member, count: int = 5):
await ctx.message.delete()

for _ in range(count):
try:
await member.send(content="ТЕКСТ ДЛЯ СПАМА")
await asyncio.sleep(1) # Задержка в 1 секунду между сообщениями
except disnake.errors.HTTPException:
print(f"Не удалось отправить сообщение пользователю {member.name}")
break
except Exception as e:
print(f"Произошла ошибка: {e}")
break
Используй спам с осторожностью.
‘gothica ‘kadrovУченик (110) 3 месяца назад
а зачем это count: int = 5):
3681 Просветленный (20338) Ограничивает кол-во сообщений, гибок для использования, даёт значение по умолчанию, типизация, контролирует выполнение.
Похожие вопросы