Discord.py — Как добавить время восстановления каждый раз, когда пользователь пытается фармить XP? (система прокачки, поPython

Программы на Python
Ответить
Anonymous
 Discord.py — Как добавить время восстановления каждый раз, когда пользователь пытается фармить XP? (система прокачки, по

Сообщение Anonymous »


Я работаю над ботом для прокачки. Я обнаружил серьезную проблему с получением опыта, и ею можно чрезвычайно злоупотреблять. Я хочу, чтобы у него было время восстановления после того, как пользователь отправляет сообщение, поэтому, когда пользователь спамит в канале для фарма XP, у него есть время восстановления 0,5 секунды для каждого сообщения, чтобы предотвратить спам. Если вы рассылаете много спама, вы легко можете попасть на первое место, а я не хочу, чтобы это произошло. С ним работает все: получение опыта, таблица лидеров и сообщение о повышении уровня. Я искал в Интернете ответ на этот вопрос, и ни один из них не помог. Кто-нибудь знает? Пожалуйста и спасибо вам!!! :)

Код:

@bot.event асинхронная защита on_message(сообщение): если не message.author.bot: # при открытии файла указываем кодировку utf-8 с open('level.json','r',coding='utf-8') как f: пользователи = json.load(f) ждут update_data(пользователи, message.author,message.guild) ждут add_experience(пользователи, message.author, 4, message.guild) await level_up(пользователи, сообщение.автор, сообщение.канал, сообщение.гильдия) # при записи файла указываем кодировку utf-8 с open('level.json','w',coding='utf-8') как f: json.dump(пользователи, е) ожидайте bot.process_commands (сообщение) асинхронное определение update_data (пользователи, пользователь, сервер): если нет str(server.id) у пользователей: пользователи[str(server.id)] = {} если нет str(user.id) в user[str(server.id)]: пользователи[str(server.id)][str(user.id)] = {} пользователи[str(server.id)][str(user.id)]['опыт'] = 0 пользователи[str(server.id)][str(user.id)]['level'] = 1 elif не str(user.id) в user[str(server.id)]: пользователи[str(server.id)][str(user.id)] = {} пользователи[str(server.id)][str(user.id)]['опыт'] = 0 пользователи[str(server.id)][str(user.id)]['level'] = 1 async def add_experience(пользователи, пользователь, опыт, сервер): пользователи[str(user.guild.id)][str(user.id)]['опыт'] += опыт async def level_up(пользователи, пользователь, канал, сервер): опыт = пользователи[str(user.guild.id)][str(user.id)]['опыт'] lvl_start = пользователи[str(user.guild.id)][str(user.id)]['уровень'] lvl_end = int(опыт ** (1/4)) if str(user.guild.id) != '757383943116030074': если lvl_start < lvl_end: awaitchannel.send(':fire: Уровень {} достиг **Уровня {}!**'.format(user.mention, lvl_end)) пользователи[str(user.guild.id)][str(user.id)]['level'] = lvl_end embed=discord.Embed(title=':fire: {} достиг **Уровня {}!**'.format(user.mention, lvl_end), color=0x38ff6a) ждут bot.get_channel(log_channel_id).send(embed=embed) @bot.command(aliases = ['rank','lvl']) уровень асинхронного определения (ctx,member: discord.Member = None): если не член: пользователь = ctx.message.author # при открытии файла указываем кодировку utf-8 с open('level.json','r',coding='utf-8') как f: пользователи = json.load(f) lvl = пользователи[str(ctx.guild.id)][str(user.id)]['уровень'] exp = пользователи[str(ctx.guild.id)][str(user.id)]['опыт'] embed = discord.Embed(title = 'Level {}'.format(lvl),description = f"{exp} XP ",color = discord.Color.green()) embed.set_author(name = ctx.author, icon_url = ctx.author.avatar.url) жду ctx.send(embed = встроить) еще: # при открытии файла указываем кодировку utf-8 с open('level.json','r',coding='utf-8') как f: пользователи = json.load(f) lvl = пользователи[str(ctx.guild.id)][str(member.id)]['уровень'] exp = пользователи[str(ctx.guild.id)][str(member.id)]['опыт'] embed = discord.Embed(title = 'Level {}'.format(lvl),description = f"{exp} XP",color = discord.Color.green()) embed.set_author(имя = участник, icon_url =member.avatar.url) жду ctx.send(embed = встроить) Пример файла JSON:
{ "757383943116030074": { "123456789012345678": { "опыт": 0, "1-й уровень } } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»