import disnake
from disnake.ext import commands
import asyncio
import datetime
import bot
import random
class GiveAway(commands.Cog):
def __init__(self, bot):
self.bot = bot
users = {}
@commands.Cog.listener()
async def on_reaction_add(reaction, user):
# проверяем, что пользователь не является ботом и что реакция была добавлена к нужному сообщению
if user.bot or reaction.message.id != 1089229079133290526:
global users
return
users[user.id] = user.name
@commands.command()
@commands.has_permissions(administrator=True)
async def give_create(self, ctx, mins: int, *, prize: str):
await ctx.send("типо все люди")
embed= disnake.Embed(title="Розыгрыш")
embed.add_field(name="Приз", value=f"{prize}")
end = datetime.datetime.utcnow() + datetime.timedelta(seconds= mins*60)
embed.add_field(name= "Заканчивается:", value= f"{end}UTC")
embed.set_footer(text= f"Закончитья через {mins} мин!")
my_msg = await ctx.send(embed = embed)
await my_msg.add_reaction("")
await asyncio.sleep(mins*60)
winner = random.choice(list(users.values()))
winner_user = bot.get_user(winner)
await ctx.send(f"{winner_user.mention}")
embed2 = disnake.Embed(title="Победитель", description=f"{winner_user.mention}")
embed2.set_thumbnail(url = winner_user.display_avatar.url)
embed2.add_field(name= "Приз", value= f"{prize}")
embed2.set_footer(text="Розыгрыш закончен!")
server = ctx.message_guild
await ctx.send(embed = embed2)
await winner.send(f"Ты победил в розыгрыше на сервере {server.name}")
def setup(bot):
bot.add_cog(GiveAway(bot))
on_reaction_add
if user.bot or reaction.message.id != 1089229079133290526:
написано полностью неправильно.user.bot
вернет True
, если юзер - бот (что из названия даже логично), а не наоборотand
, но не or
global users
return
не имеет смыслаusers
никогда не обнуляется