@Karnewick

Как вывести переменную на обе команды?

У меня есть переменные member и time, мне нужно, чтоб при окончании голосования выдавалась роль на определенное время

@client.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def startvote(ctx, member = discord.Member = None): 
    if member == None:
        return
    
    channel = ctx.channel
    emb = discord.Embed(title=f'@everyone ЩАС КТО-ТО  УЛЕТИТ В НОКАУТ.', description=f"Улетает {member.mention}",
                                  colour=discord.Color.blue())
    message = await ctx.send(embed=emb)
    await message.add_reaction('✅')
    await message.add_reaction('❌')
    global message_id 
    message_id = message.id 




@client.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def endvote(ctx):

    channel = ctx.channel
    message = await channel.fetch_message(message_id) 
    resactions = [reaction for reaction in message.reactions if reaction.emoji in ['✅', '❌']]
    result = ''
    for reaction in resactions:
        result += reaction.emoji + ": " + str(reaction.count - 1)
    emb = discord.Embed(title=f'Короче', description='Итог голосования: ' + str(result),
                                  colour=discord.Color.orange())
    await ctx.send(embed=emb)




    if int(result[3]) > int(result[7]):
        await member.add_roles(1016473374731534386)
        await asyncio.sleep(time)
        await member.remove_roles(1016473374731534386)
    else:
        await ctx.send("каким образом он не улетел?")
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121
Python developer
Если предполагается нормальная реализация для мультисерверного бота стоит хранить в БД.

Если локальный бот на костылях выше объявить переменную и там хранить. Сломается если запустить 2 голосования разом или вырубить бота.

Если на костылях, но хочется чтобы не ломалось хранить выше словарем с ключами равными id сообщения и добавить в endvote этот id как принимаемый параметр. Это все равно плохое решение при котором данные могут быть утеряны, но работать будет.
Ответ написан
Ваш ответ на вопрос

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

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