@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
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Вы передаете имя нарушителя в переменную member
Затем, в цикле, перезаписываете значение этой переменной на имя человека с ролью модератора
for member in members:

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

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

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

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