@cataclysm88

Как сделать 2 пинга через Discord py?

Есть такой код:
async def report(ctx, member: discord.Member,  *, arg):
    role = ctx.guild.get_role(999999999999) # Представьте, что 9999999 id роли модератора
    members = ctx.guild.members
    await ctx.channel.send('Your complaint was sent to moderators!', delete_after=10)
    for member in members:
        if role in member.roles:
            await member.send(f'{ctx.author.mention} оставил жалобу на {member.mention} с причиной:\n**{arg}**')
            await ctx.message.delete()


Что делает код:
Когда мы пишем $report @user причина, всем людям у которых есть роль модератор, т.е. id 999999999999, им отправляется личное сообщение, что @Автор оставил жалобу на @Нарушителя с причиной: Причина.
И тут такая проблема, что вместо имени Нарушителя, в лс отправляется имя модератора, которому отправляется в лс это сообщение.
Т.е. если модератора зовут к примеру John, то он получает в лс это:
@Автор оставил жалобу на @John, хотя он оставлял на другого.
Вот, как это исправить, уже 2-ой день пытаюсь это сделать.
Мне нужно, чтоб модератор получал в ЛС вот это, и без всяких багов:unknown.png
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Вы передаете имя нарушителя в переменную member
Затем, в цикле, перезаписываете значение этой переменной на имя человека с ролью модератора
for member in members:

Либо делайте for user in users: и соответственно await user.send, либо придумайте другое название параметра для нарушителя.

В общем поправьте имена переменных, чтобы они не пересекались. Для этого стоит делать более явные именна переменных, тот же member слишком общее определение имеет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Destr2808
ы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы