• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Вопрос Экономика discord.py

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
12 Июл 2020
Сообщения
66
Реакции
11
Всем привет.
Решил сделать систему репутаций уже сделал +rep \ -rep, но кое что зародилось у меня в голове.

Хочу чтобы:
Если пользователь достигал +REP > 25, то ему выдавалось бы роль "Хорошая репутация"
Как выдавать роль я знаю, но как сделать проверку через if что у пользователя уже более 25 +rep, ну прям не могу ничего придумать, надеюсь на вашу помощь.
 
Всем привет.
Решил сделать систему репутаций уже сделал +rep \ -rep, но кое что зародилось у меня в голове.

Хочу чтобы:
Если пользователь достигал +REP > 25, то ему выдавалось бы роль "Хорошая репутация"
Как выдавать роль я знаю, но как сделать проверку через if что у пользователя уже более 25 +rep, ну прям не могу ничего придумать, надеюсь на вашу помощь.
Такого рода дискорд ботами я не занимался, но попытаюсь помочь.
Колличество репутаций человека лучше хранить в бд (а где ещё?), рекомендую sqlite

есть два варианта
1. глобальная репутация (репутация не зависит от сервера)
2. серверная репутация (на каждом сервере разная репутация)
рассматривать буду 1 вариант т.к. легче реализовать
при командах +- реп проверить есть ли юзер id в бд (оценивали ли его раньше) если нет то создать
(примерный sqlite код: INSERT INTO USERS (ID, REP)VALUES ('discord uid', '0'))
потом обновить значение + или - 1
(примерный sqlite код: UPDATE USERS SET REP = 'rep val' WHERE UID = 'discord uid')
если да то обновить значение (см выше).
а проверять количество репы легко получить репу из бд и сравнить с числом
(примерный sqlite код получения репы: SELECT REP FROM USR WHERE UID = 'discord uid')
это примерный принцып работы, учти что я не рассмотрел кд команды так что можно будет легко накручивать репы
 
Такого рода дискорд ботами я не занимался, но попытаюсь помочь.
Колличество репутаций человека лучше хранить в бд (а где ещё?), рекомендую sqlite

есть два варианта
1. глобальная репутация (репутация не зависит от сервера)
2. серверная репутация (на каждом сервере разная репутация)
рассматривать буду 1 вариант т.к. легче реализовать
при командах +- реп проверить есть ли юзер id в бд (оценивали ли его раньше) если нет то создать
(примерный sqlite код: INSERT INTO USERS (ID, REP)VALUES ('discord uid', '0'))
потом обновить значение + или - 1
(примерный sqlite код: UPDATE USERS SET REP = 'rep val' WHERE UID = 'discord uid')
если да то обновить значение (см выше).
а проверять количество репы легко получить репу из бд и сравнить с числом
(примерный sqlite код получения репы: SELECT REP FROM USR WHERE UID = 'discord uid')
это примерный принцып работы, учти что я не рассмотрел кд команды так что можно будет легко накручивать репы
Забыл сказать, использую sqlite для хранение репутации игрока. В принципе я знаю как получать число из БД пользователя, мне именно создание проверки,
if игрок > rep[25] то он получает роль.
 
Забыл сказать, использую sqlite для хранение репутации игрока. В принципе я знаю как получать число из БД пользователя, мне именно создание проверки,
if игрок > rep[25] то он получает роль.

Написал как вспомнил, мб что-то не будет работать

Что-то типо такого:
Expand Collapse Copy
from discord.utils import get

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

async function rep_command(ctx, member):
    ... Код выдачи +реп
    result = cursor.execute("SELECT `REP` FROM `USR` WHERE `UID` = %s)", (member.id, ))
    user_rep = result.fetchone()
    if user_rep > 24:
        role = discord.utils.get (member.guild.roles , id = 722476920591351899) #ID Роли
        await member.add_roles (role)
 
Последнее редактирование:
Написал как вспомнил, мб что-то не будет работать

Что-то типо такого:
Expand Collapse Copy
from discord.utils import get

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

async function rep_command(ctx, member):
    ... Код выдачи +реп
    result = cursor.execute("SELECT `REP` FROM `USR` WHERE `UID` = %s)", (member.id, ))
    user_rep = result.fetchone()
    if user_rep > 24:
        role = discord.utils.get (member.guild.roles , id = 722476920591351899) #ID Роли
        await member.add_roles (role)
Ага, вроде понял по этому примеру как реализовать. Спасибо сейчас буду пробовать
 
Написал как вспомнил, мб что-то не будет работать

Что-то типо такого:
Expand Collapse Copy
from discord.utils import get

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

async function rep_command(ctx, member):
    ... Код выдачи +реп
    result = cursor.execute("SELECT `REP` FROM `USR` WHERE `UID` = %s)", (member.id, ))
    user_rep = result.fetchone()
    if user_rep > 24:
        role = discord.utils.get (member.guild.roles , id = 722476920591351899) #ID Роли
        await member.add_roles (role)
1657743128437.png

Получилось, что то вроде этого, но роль после достижение отметки 5 не добавляется, хотя взял добавление роли с "on_member_join", скорее всего буду переписывать добавление роли, может поможет.
Написал как вспомнил, мб что-то не будет работать

Что-то типо такого:
Expand Collapse Copy
from discord.utils import get

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

async function rep_command(ctx, member):
    ... Код выдачи +реп
    result = cursor.execute("SELECT `REP` FROM `USR` WHERE `UID` = %s)", (member.id, ))
    user_rep = result.fetchone()
    if user_rep > 24:
        role = discord.utils.get (member.guild.roles , id = 722476920591351899) #ID Роли
        await member.add_roles (role)
Попробовал твой вариант добавление роли, такая же фигня не работает, значит получение цифры не идёт, но концепцию я вроде понял. Если есть ошибки буду в коде, то скажи, а то может я туплю
 
Написал как вспомнил, мб что-то не будет работать

Что-то типо такого:
Expand Collapse Copy
from discord.utils import get

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

async function rep_command(ctx, member):
    ... Код выдачи +реп
    result = cursor.execute("SELECT `REP` FROM `USR` WHERE `UID` = %s)", (member.id, ))
    user_rep = result.fetchone()
    if user_rep > 24:
        role = discord.utils.get (member.guild.roles , id = 722476920591351899) #ID Роли
        await member.add_roles (role)
написал команду +rep он стал кд давать ему роль
 
у тебя в коде проверка на user_rep > 4
Ну я поставил чисто для теста, чтобы при достижение 5 он выдавал роль, а выдаётся почему то сразу. Может я щас туплю, наверное надо отдохнуть, а то сижу, то один проект делаю, то другой.
 
Всем привет.
Решил сделать систему репутаций уже сделал +rep \ -rep, но кое что зародилось у меня в голове.

Хочу чтобы:
Если пользователь достигал +REP > 25, то ему выдавалось бы роль "Хорошая репутация"
Как выдавать роль я знаю, но как сделать проверку через if что у пользователя уже более 25 +rep, ну прям не могу ничего придумать, надеюсь на вашу помощь.
При команде +реп делать проверки которые тебе нужны по типу повторной отправки, отправке самому себе, дальше получить кол-во репутаций из бд прибавить 1 сравнить с 25 выдать роль и сохранить?
 
Забыл сказать, использую sqlite для хранение репутации игрока. В принципе я знаю как получать число из БД пользователя, мне именно создание проверки,
if игрок > rep[25] то он получает роль.
При получение +реп сделай или отмены этого +реп сделай получение всех репов и обновляй ему роль, или сделай кронтаб себе который будет проверять каждые 5 минут по тайменру функцию который будет чекать всех юзеров и выдавать роль если у человека есть и он не имеет уже активной роли
 
При получение +реп сделай или отмены этого +реп сделай получение всех репов и обновляй ему роль, или сделай кронтаб себе который будет проверять каждые 5 минут по тайменру функцию который будет чекать всех юзеров и выдавать роль если у человека есть и он не имеет уже активной роли
Вроде в discord.py можно создать свой events, так что попробую вариант с проверкой каждые 5 минут.
При команде +реп делать проверки которые тебе нужны по типу повторной отправки, отправке самому себе, дальше получить кол-во репутаций из бд прибавить 1 сравнить с 25 выдать роль и сохранить?
Уже челик сверху дал код, так что я вроде понял как это реализовать, но всё равно спасибо<3
 
Назад
Сверху Снизу