Пример #1
0
async def loser_pm(giveaway):
    losers_tuple = giveaway.get_entrants()
    losers_list = []
    for x in losers_tuple:
        losers_list.append(x)
    winners = giveaway.get_winners()
    winners_list = []
    for x in winners:
        winners_list.append(x)
    for x in losers_list:
        if x in winners_list:
            losers_list.remove(x)
    for user_id in losers_list:
        read_write.add_entry(user_id[0])
        user = await client.get_user_info(user_id[0])
        line1 = "Better Luck Next Time.\n"
        line2 = "Yikes " + user.mention + " You didin't win giveaway " + giveaway.get_id(
        ) + "\n"
        line3 = "Since you are a winner in our book, we are awarding you an extra entry in future giveaways until you win one. Good Luck!\n"
        msg = line1 + line2 + line3
        em = discord.Embed(colour=EM_COLOUR, description=msg)
        em.set_image(url=giveaway.get_image())
        em.set_footer(text=EM_FOOTER)
        user = await client.get_user_info(user_id)
        try:
            await client.send_message(user, embed=em)
        except:
            print("User " + user.name +
                  " Has messages from other server members disabled!")
    return
    return
Пример #2
0
async def winner_pm(giveaway):
    users_tuple = giveaway.get_winners()
    winners = []
    for x in users_tuple:
        winners.append(x)
    for user_id in winners:
        read_write.add_entry(user_id[0])
        read_write.set_multiplier_to_one(user_id[0])
        try:
            user = await client.get_user_info(user_id[0])
        except:
            print(user_id + "is unable to receive msges fron this bot")
            user = client.user
        line1 = "Winner winner Chicken Dinner!\n"
        line2 = "Congratulations " + user.mention + " You have won giveaway " + giveaway.get_id(
        ) + "\n"
        line3 = "A Community Manager will contact you shortly.\n"
        date = date_parser(giveaway.timeframe.end, giveaway.timeframe.endtime)
        date[2] = str(int(date[2]) + 7)
        line4 = "You will have until " + str(date[0]) + "/" + str(
            date[1]) + "/" + str(date[2]) + " to collect your prize.\n"
        msg = line1 + line2 + line3 + line4
        em = discord.Embed(colour=EM_COLOUR, description=msg)
        image = (giveaway.get_image())
        em.set_image(url=image)
        em.set_footer(text=EM_FOOTER)
        await client.send_message(user, embed=em)
    return
Пример #3
0
async def archive_giveaway(message):
    text = message.content.split(sep=" ")
    giveaway = retrieve_giveaway(text[1])
    if giveaway == "NA":  # means there was an error in the read function
        await client.send_message(message.channel, "Invalid giveaway id!")
        return
    giveaway.set_status("archived")
    store_giveaway(giveaway)
    msg = "giveaway " + giveaway.get_id() + " has been archived"
    await client.send_message(message.channel, msg)
Пример #4
0
async def set_image(message):
    text = message.content.split(sep=" ")
    giveaway = retrieve_giveaway(text[1])
    if giveaway == "NA":  # means there was an error in the read function
        await client.send_message(message.channel, "Invalid giveaway id!")
        return
    giveaway.set_image(text[3])
    store_giveaway(giveaway)
    msg = ("Image has been updated for giveaway '" + giveaway.get_id() +
           "' Use ```!giveaway [id] preview``` to preview the giveaway")
    await client.send_message(message.channel, msg)
Пример #5
0
def giveaway_done(giveaway):
    giveaway.set_status("archived")
    giveaway.draw_winners(giveaway.get_number_of_winners())
    giveaway.replace_winners = 1
    store_giveaway(giveaway)
    reloaded = retrieve_giveaway(giveaway.get_id())
    winners = ()
    for x in reloaded.get_winners():
        winners = winners + (x[0], )
    donelist.append(reloaded)
    return
Пример #6
0
async def preview_giveaway(message, listmode=0):
    if listmode != 0:
        giveaway_id = listmode
    else:
        giveaway_id = (message.content.split(sep=" "))[1]
    giveaway = retrieve_giveaway(giveaway_id)
    if giveaway == "NA":
        await client.send_message(message.channel, "Invalid ID!")
        return
    winning_users = []
    for x in giveaway.get_winners():
        winning_users.append(x)

    if giveaway.get_status() == "active":
        liveswitch = "\** LIVE \**"
    else:
        liveswitch = "\** COMPLETE \**"
    line1_1 = str("**Giveaway #" + giveaway.get_id() + " |** start-" +
                  giveaway.timeframe.start)
    line1_2 = str(" end-" + giveaway.timeframe.end + " --" +
                  giveaway.get_status() + "--" + " **|\n" +
                  giveaway.get_header() + "**\n" + liveswitch + "\n")
    line1 = line1_1 + line1_2
    line2 = giveaway.get_description() + "\n"
    line3 = "**Winners(" + giveaway.get_number_of_winners() + "):**"
    line4 = "Number of entrants: **" + str(len(giveaway.entrants)) + "** \n"
    if len(winning_users) == 0:
        line3 = line3 + " Not Drawn \n"
    else:
        for i in winning_users:
            user = await client.get_user_info(i[0])
            userstring = user.mention
            line3 = line3 + userstring + " "
        line3 = line3 + "**|** Congratulations!\n"

    msg = line2 + line4 + line3
    em = discord.Embed(colour=EM_COLOUR, title=line1, description=msg)
    image = (giveaway.get_image())
    em.set_image(url=image)
    em.set_footer(text=EM_FOOTER)

    message_to_cache = await client.send_message(message.channel, embed=em)
    sql = "INSERT INTO message_cache VALUES (%s,%s, %s)"
    values = (giveaway_id, message_to_cache.id, message_to_cache.channel.id)
    cursor.execute(sql, values)
    database.commit()
    # for x in client.get_all_emojis():
    #     print(str(x))
    emoji = discord.utils.get(client.get_all_emojis(), name=ENTRY_TOKEN)
    # print(str(emoji))
    await client.add_reaction(message_to_cache, emoji)
    return
Пример #7
0
async def set_winners(message):
    text = message.content.split(sep=" ")
    giveaway = retrieve_giveaway(text[1])
    if giveaway == "NA" or len(
            text) < 4:  # means there was an error in the read function
        await client.send_message(
            message.channel,
            "Invalid giveaway id, or not enough parameters passed!!")
        return
    giveaway.set_number_of_winners(text[3])
    store_giveaway(giveaway)
    msg = ("There are now " + giveaway.get_number_of_winners() +
           " winners for giveway '" + giveaway.get_id() + "'")
    await client.send_message(message.channel, msg)
Пример #8
0
async def set_description(message):
    text = message.content.split(sep=" ")
    giveaway = retrieve_giveaway(text[1])
    if giveaway == "NA":  # means there was an error in the read function
        await client.send_message(message.channel, "Invalid giveaway id!")
        return
    description = ""
    for x in range(3, len(text)):
        description = description + text[x] + " "
    giveaway.set_description(description)
    store_giveaway(giveaway)
    msg = ("The new description for giveaway '" + giveaway.get_id() +
           "' is '" + giveaway.get_description() + "'")
    await client.send_message(message.channel, msg)
Пример #9
0
async def set_date(message):
    content = message.content.split(sep=" ")
    giveaway = retrieve_giveaway(content[1])
    if giveaway == "NA":
        await client.send_message(message.channel, "Invalid ID!")
        return
    # should be yyyy/mm/dd hh:mm
    try:
        giveaway.timeframe.end = str(content[3])
        giveaway.timeframe.endtime = str(content[4])
    except:
        await client.send_message(
            message.channel, "Invalid formatting! Should be yyyy/mm/dd hh:mm")
        return
    date = giveaway.timeframe.end.split(sep="/")

    year = date[0]
    month = date[1]
    day = date[2]

    time = giveaway.timeframe.endtime.split(sep=":")

    hour = time[0]
    minute = time[1]
    if (giveaway.status == "archived"):
        await client.send_message(message.channel,
                                  "This giveaway has already been completed!")
        return
    # print(year +" " + month + " " + day + " " + hour + " " +minute)
    timer = start_timer(
        [int(year), int(month),
         int(day), int(hour),
         int(minute), 0])
    if (type(timer) == str):
        await client.send_message(
            message.channel,
            "Invalid Time! Should be yyyy/mm/dd hh:mm and not located in the past"
        )
        return
    timer.start()

    store_giveaway(giveaway)
    await client.send_message(
        message.channel,
        "Giveaway **#" + giveaway.get_id() + "** will end on " +
        giveaway.timeframe.end + " at " + giveaway.timeframe.endtime)
    return
Пример #10
0
async def enter_pm(user_id, giveaway):
    line1 = "You have been entered for giveaway " + giveaway.get_id() + "\n"
    line2 = "Description: " + giveaway.get_description() + "\n"
    line3 = "End date: " + giveaway.timeframe.end + "\n"
    line4 = "If you win, you will be notified by the bot and a TC staff member. Good luck! \n"

    msg = line1 + line2 + line3 + line4
    em = discord.Embed(colour=EM_COLOUR, title=msg)
    em.set_image(url=giveaway.get_image())
    em.set_footer(text=EM_FOOTER)
    user = await client.get_user_info(user_id)
    try:
        await client.send_message(user, embed=em)
    except:
        print("User " + user.name +
              " Has messages from other server members disabled!")
    return
Пример #11
0
async def redraw_winners(message):
    text = message.content.split(sep=" ")
    giveaway = retrieve_giveaway(text[1])
    if giveaway == "NA":
        client.send_message(message.channel, "Invalid ID")
        return
    if giveaway.get_status() != "archived":
        await client.send_message(
            message.channel,
            "This giveaway is not complete! Unable to redraw!")
        return
    giveaway.draw_winners(giveaway.get_number_of_winners())
    giveaway.replace_winners = 1
    store_giveaway(giveaway)

    msg = "Winners have been picked randomly for giveaway '" + giveaway.get_id(
    ) + "'"
    await client.send_message(message.channel, msg)
    return
Пример #12
0
async def update_giveaways():
    sql = "SELECT * FROM message_cache "
    cursor.execute(sql)
    messages = cursor.fetchall()
    message_list = []
    for i in range(len(messages)):
        message_list.append(messages[i])
    for x in message_list:
        giveaway_id = x[0]
        try:
            message = await client.get_message(client.get_channel(x[2]), x[1])
        except:
            donothing = 1
        giveaway = retrieve_giveaway(giveaway_id)
        if giveaway == "NA":
            return
        winning_users = []
        for x in giveaway.get_winners():
            winning_users.append(x)
        if giveaway.get_status() == "active":
            liveswitch = "\** LIVE \**"
        else:
            liveswitch = "\** COMPLETE \**"
        line1_1 = str("**Giveaway #" + giveaway.get_id() + " |** start-" +
                      giveaway.timeframe.start)
        line1_2 = str(" end-" + giveaway.timeframe.end + " --" +
                      giveaway.get_status() + "--" + " **\n" +
                      giveaway.get_header() + "**\n" + liveswitch + "\n")
        line1 = line1_1 + line1_2
        line2 = giveaway.get_description() + "\n"
        line3 = "**Winners(" + giveaway.get_number_of_winners() + "):**"
        line4 = "Number of entrants: **" + str(len(
            giveaway.entrants)) + "** \n"
        if len(winning_users) == 0 and giveaway.timeframe.end != "3000/01/01":
            current_date = datetime.datetime.utcnow()
            end_time_array = date_parser(giveaway.timeframe.end,
                                         giveaway.timeframe.endtime)
            end_time = datetime.datetime(end_time_array[0], end_time_array[1],
                                         end_time_array[2], end_time_array[3],
                                         end_time_array[4], 0)
            difference = (end_time - current_date)
            line3 = "Time till drawing: " + str(
                difference.days) + " days " + str(
                    int(difference.seconds / (60 * 60))) + " hours " + str(
                        int((difference.seconds / (60)) % 60)) + " minutes"
        elif giveaway.status == "archived":
            for i in winning_users:
                user = await client.get_user_info(i[0])
                userstring = user.mention
                line3 = line3 + userstring + " "
            line3 = line3 + "**|** Congratulations!\n"

        msg = line2 + line4 + line3
        em = discord.Embed(colour=EM_COLOUR, title=line1, description=msg)
        image = (giveaway.get_image())
        em.set_image(url=image)
        em.set_footer(text=EM_FOOTER)
        try:
            await client.edit_message(message, new_content=None, embed=em)
        except:
            donothing = 1
            # yeah sorry this hurts me too
        database.commit()
    return