@VoKaPTV

Есть ли возможность с помощью библиотеки discord.py на языке Python реализовать идею зачисления баллов за сообщение?

Есть база данных в которой записаны что-то вроде баллов, есть система покупки привилегий за счёт этих баллов, но по задумке я предполагал сделать зачисление баллов за счёт сообщений, чем больше людей пишет тем лучше, и с системой анти спама(но это уже позже), вернёмся к теме с сообщениями, поискал в интернете, не нашёл ничего похожего, надеюсь на вашу помощь

Хотелось бы реализовать систему мониторинга сообщений.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
Zuguki
@Zuguki
I'm working all the time!
Смотри, я делал это через json, но думаю ты разберешься с тем, как все настроить на базе данных.

@client.event
async def on_message(message):
    with open('data.json', mode='r') as file:
        data = json.load(file)

    client_id = str(message.author.id)

    # The function checks users in 'data' variable.
    async def update_data(user):
        if user not in data:
            data[user] = {}
            data[user]['lvl'] = 1
            data[user]['exp'] = 0

    # The function gives exp to users, when they send messages.
    async def add_exp(user):
        data[user]['exp'] += 0.1

    # The function gives a new level once exp reaches new level-milestone.
    async def add_lvl(user):
        if data[user]['exp'] >= data[client_id]['lvl']:
            data[user]['exp'] = 0
            data[user]['lvl'] += 1
            emb = discord.Embed(description=f'{message.author} Повысил свой уровень!', color=0xf2db0a)
            await message.channel.send(embed=emb)

    await update_data(client_id)
    await add_exp(client_id)
    await add_lvl(client_id)

    with open('data.json', mode='w') as file:
        json.dump(data, file)


Получается такая реализация, что когда пользователь что либо пишет, у него прибавляется exp, если exp == lvl, то lvl обновляется, а exp обнуляется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
Вроде питон умеет работать с числами, так что прибавлять число можно, возможность есть
Ответ написан
Ваш ответ на вопрос

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

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