示例#1
0
def mod(s, message):
    messagesplit = message.split(" ")
    searchterm = "+".join(messagesplit[1:])

    try:
        r = requests.get(
            f'https://steamcommunity.com/workshop/browse/?appid=294100&searchtext={searchterm}&childpublishedfileid=0&browsesort=textsearch&section=items&requiredtags[]=Mod'
        )
        webpage = r.text
        soup = BeautifulSoup(webpage, "html.parser")
        # for item in soup.find_all(re.compile("SharedFileBindMouseHover\(.+({.+})")):
        for item in soup.find_all("script"):
            itemtext = re.sub('[\\r\\t\\n]', '', item.text)
            if 'SharedFileBindMouseHover' in itemtext:
                item = re.search('({.*})', itemtext)
                jsonitem = json.loads(item.group(1))
                modtitle = jsonitem['title']
                modid = jsonitem['id']
                break

        try:
            send_message(
                s,
                f'Found the mod: {modtitle} https://steamcommunity.com/sharedfiles/filedetails/?id={modid}'
            )
        except:
            send_message(s, "No mods found.")
    except Exception as errormsg:
        errorlog(errormsg, "ModSearch()", "")
示例#2
0
def remove_question(s, message):
    global questions
    try:
        messageparts = message.split(" ")
        del questions[messageparts[1]]
        qcounter = 1
        with open(
                f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Questions.txt",
                'w') as f:
            for key, val in questions.items():
                f.write("%s:%s\n" % (qcounter, val))
                qcounter += 1
        questions = {}
        with open(
                f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Questions.txt'
        ) as f:
            for line in f:
                split = line.split(":")
                questions[split[0]] = split[1].rstrip('\n')
        send_message(s, "Question %s removed!" % messageparts[1])

    except KeyError:
        send_message(s, f'Question number {messageparts[1]} does not exist.')

    except Exception as errormsg:
        errorlog(errormsg, "Questions/remove_question()", message)
示例#3
0
def brokenboner(s):
    send_message(
        s, "The game is to bet how long it takes for Fid to break a leg or "
        "die in ARMA. "
        "The timer usually starts after the teleport pole or as the convoy moves out. "
        "Anyone can join to try and win the title \"Broken Boner\"! "
        "Use !bet <minutes> to place your bets!")
示例#4
0
def clearsuggestions(s):
    try:
        with open(f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/SongSuggestions.txt', 'w') as f:
            f.write("")
        send_message(s, "List cleared!")
    except Exception as errormsg:
        send_message(s, "There was an error adding this. Please try again!")
        errorlog(errormsg, "SongSuggestions/clearsuggestions()", "")
示例#5
0
def openbets(s):
    global betsopen
    if not betsopen:
        betsopen = True
        send_message(
            s, "Taking bets for the Broken Boner game! "
            "Use !bet <number> to join in!")
    else:
        send_message(s, "Bets already opened!")
示例#6
0
def unshorten(s, shorturl):
    try:
        url = f'https://unshorten.me/json/https://{shorturl}'
        r = requests.get(url).json()
        longurl = r["resolved_url"]
        if shorturl not in longurl and longurl != "":
            send_message(s, f"This link expands to: {longurl}")
    except Exception as errormsg:
        errorlog(errormsg, "unshorten()", "")
示例#7
0
def bsmessage(s):
    global bstimer
    if backseating:
        try:
            bstimer = threading.Timer(900, bsmessage, [s])
            bstimer.start()
            send_message(s, bsmessagestr)
        except Exception as errormsg:
            errorlog(errormsg, "Backseatmessage()", '')
示例#8
0
def last_quote(s):
    try:
        quoteindex = len(quotes)
        quote = quotes[str(quoteindex)]
        send_message(s, "Quote %s: %s" % (quoteindex, quote))
    except Exception as errormsg:
        errorlog(errormsg, "Quotes/removequote()", "")
        send_message(
            s, "There was an error retrieving the last quote. Error logged.")
示例#9
0
def clearbets(s):
    global bets
    global timers
    try:
        bets = {}
        timers = {}
        send_message(s, "Bets cleared!")
    except Exception as errormsg:
        send_message(s, "Error clearing the bets. Error logged.")
        errorlog(errormsg, 'Bonertimer/clearbets()', '')
示例#10
0
def currentboner(s):
    try:
        with open(
                f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Titleholder.txt",
                "r") as f:
            titleholder = f.read()
        send_message(
            s, "The current owner of the title \"Broken Boner\" is: " +
            titleholder + "!")
    except Exception as errormsg:
        errorlog(errormsg, 'Bonertimer/currentboner()', '')
        send_message(s, "Error reading current boner")
示例#11
0
def followergoal(s, channel_id, channel, client_id):
    try:
        url = f'https://api.twitch.tv/helix/users/follows?to_id={channel_id}'
        headers = {'Client-ID': client_id, 'Accept': 'application/vnd.twitchtv.v5+json'}
        r = requests.get(url, headers=headers).json()
        total = r["total"]
        total = '250'
        if int(total) % 250 == 0 and total not in goals:
            send_message(s, f"@{channel.decode()} congrats on {total} followers!")
            goals.append(total)
    except Exception as errormsg:
        errorlog(errormsg, "followergoals()", "")
示例#12
0
def addending(s, message):
    try:
        keyword = "!addending "
        newending = message[message.index(keyword) + len(keyword):]
        with open(
                f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Endings.txt",
                "a") as f:
            f.write(newending + "\n")
        send_message(s, "Ending added to the list!")
    except Exception as errormsg:
        send_message(
            s, "There was an error registering your text. Please try again!")
        errorlog(errormsg, 'Bonertimer/addending()', message)
示例#13
0
def dead(s, game):
    try:
        if game in deaths:
            deaths[game] += 1
        else:
            deaths[game] = 1
        send_message(s, "A new death! Deathcount: %d!" % deaths[game])
        with open(f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Deaths.txt', 'w') as f:
            for key, value in deaths.items():
                f.write("%s:%s\n" % (key, value))
    except Exception as errormsg:
        send_message(s, "A error occured. Please try again.")
        errorlog(errormsg, "!dead", '')
示例#14
0
def resettimer(s):
    global timeractive
    global betsopen
    global timers
    try:
        timeractive = False
        betsopen = True
        for t in list(timers.values()):
            t.cancel()
        time.sleep(1)
        timers = {}
        send_message(s, "Timer reset. Bets are now open again!")
    except Exception as errormsg:
        errorlog(errormsg, "BonerTimer/resettimer()", '')
示例#15
0
def func_rules(s, message):
    arguments = message.split(" ")
    ruleno = arguments[1]
    ruletext = rules[ruleno]['rule']

    if arguments[2] in warnings.keys():
        warningno = str(warnings[arguments[2]].count(ruleno) + 1)
        warnings[arguments[2]].append(ruleno)
    else:
        warnings[arguments[2]] = ruleno
        warningno = '1'

    if warningno == "1":
        warningnotext = "first"
    elif warningno == "2":
        warningnotext = "second"
    elif warningno == "3":
        warningnotext = "third"
    else:
        warningnotext = "null"

    timeouttime = rules[ruleno][warningno]
    if timeouttime != '0':
        send_message(s, "/timeout %s %s broke rule %s (%s warning)" % (
            arguments[2], timeouttime, ruleno, warningnotext))
        send_message(s, "@%s You have been timed out for %s seconds because "
                        "you broke rule %s: %s."" This was your %s warning!" %
                     (arguments[2], timeouttime, ruleno, ruletext, warningnotext))
    else:
        send_message(s, "/ban %s  broke rule %s" % (arguments[2], ruleno))
        send_message(s, "@%s You have been banned from this channel because "
                        "you broke rule %s: %s. This was your %s warning!" %
                     (arguments[2], ruleno, ruletext, warningnotext))
示例#16
0
def timer(s):
    try:
        if timeractive:
            timenow = datetime.time(datetime.now())
            timer = datetime.combine(date.today(), timenow) - datetime.combine(
                date.today(), starttime)
            timer = str(timer).split('.')[0]
            timersplit = timer.split(':')
            endtime = ":".join(timersplit)
            send_message(s, "Fid has been alive for: " + endtime)
        else:
            send_message(s, "There is currently no timer active!")
    except Exception as errormsg:
        errorlog(errormsg, "BonerTimer/timer()", '')
示例#17
0
def add_question(s, message):
    global questions
    try:
        keyword = "!addquestion "
        newquestion = message[message.index(keyword) + len(keyword):]
        questions[str(len(questions) + 1)] = newquestion
        with open(
                f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Questions.txt",
                'a') as f:
            f.write("%s:%s\n" % (len(questions), newquestion))
        send_message(s, "question %d added!" % len(questions))
    except Exception as errormsg:
        send_message(
            s, "There was an error adding this question. Please try again!")
        errorlog(errormsg, "Questions/add_question()", message)
示例#18
0
def suggest(s, message):
    try:
        keyword = "!suggest "
        suggestion = message[message.index(keyword) + len(keyword):]
        wrongchars = ['<', '>', '{', '}', '(', ')', '#', '%', '*', '\:', "\"", "|"]
        for elem in wrongchars:
            if elem in suggestion:
                suggestion = suggestion.replace(elem, "")

        with open(f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/SongSuggestions.txt', 'a') as f:
            f.write(suggestion + "\n")
        send_message(s, "Song suggestion registered!")
    except Exception as errormsg:
        send_message(s, "There was an error adding this. Please try again!")
        errorlog(errormsg, "SongSuggestions/suggest()", message)
示例#19
0
def announcer(s, displayname, bettime):
    global bets
    global timers
    try:
        try:
            ending = random.choice(endings)
        except:
            ending = ""
        send_message(
            s, "%s's time has come with %s minutes! %s" %
            (displayname, bettime, ending))
        # bets.pop(displayname)
        timers.pop(displayname)

    except Exception as errormsg:
        errorlog(errormsg, "Announcer()", '')
示例#20
0
def removebet(s, message):
    global bets
    global timers
    try:
        rembet = message.split(" ")[1]
        try:
            if all(i.isdigit() for i in rembet):
                if int(rembet) in list(bets.values()):
                    if list(bets.values()).count(int(rembet)) > 1:
                        userbets = []
                        index = 0
                        for i in list(bets.values()):
                            if int(rembet) == i:
                                userbets.append(list(bets.keys())[index])
                            index += 1
                        send_message(
                            s, "Found more than one bet of " + rembet +
                            " by these users: " + str(userbets))

                    else:
                        rembet = list(bets.keys())[list(bets.values()).index(
                            int(rembet))]
                        del bets[rembet]
                        del timers[rembet]
                        send_message(
                            s, "Bet for " + rembet + " removed from pool.")
                else:
                    raise Exception
            else:
                if rembet in list(bets.keys()):
                    del bets[rembet]
                    del timers[rembet]
                    send_message(s, "Bet for " + rembet + " removed from pool")
                else:
                    raise Exception
        except Exception:
            send_message(s, "There are no bets with this name or value.")
        else:
            with open(
                    f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Bets.txt',
                    'w') as f:
                for key in bets:
                    f.write(key + ":" + str(bets[key]) + "\n")

    except Exception as errormsg:
        send_message(s, "Error removing user from current pool.")
        errorlog(errormsg, 'Bonertimer/removebet()', message)
示例#21
0
def starttimer(s):
    global timeractive
    global betsopen
    global starttime
    global timers
    if timeractive:
        send_message(s, "Timer already started!")
    else:
        timeractive = True
        betsopen = False
        starttime = datetime.time(datetime.now())
        # Start all timer threads
        for t in list(timers.values()):
            t.start()
        send_message(
            s, "The timer has been started. No more bets can be placed! "
            "Good luck all!")
示例#22
0
def roulette(displayname, s):
    try:
        randint = random.randint(1, 6)
        send_message(s, "%s spins the gun and pulls the trigger.." % displayname)
        time.sleep(1)
        if randint == 1:
            send_message(s, "The gun fires and %s drops dead to the ground!" % displayname)
            send_message(s, "/timeout %s 1" % displayname)
        else:
            send_message(s, "A CLICK can be heard as nothing happends. %s lives!" % displayname)
    except exception as errormsg:
        errorlog(errormsg, "roulette()", '')
示例#23
0
def start_chat(name, age, rating, status):

    # validating users details.
    error_message = None  # variable for storing error messages.
    if not (age > 12 and age < 50):
    # invalid age

        error_message = "Invalid age. Provide correct details."
        print error_message
    else:
        welcome_message = "Authentication complete. Welcome\n " \
                      "Name : " + name + "\n" \
                      "Age: " + str(age) + "\n" \
                      "Rating: " + str(rating) + "\n" \
                      "Proud to have you onboard"
        print welcome_message
    # displaying menu for user.
    show_menu = True
    while show_menu:
        menu_choices = "What do you want to do? \n " \
                       "1. Add a status update \n " \
                       "2. Add a friend \n " \
                       "3. Send a secret message \n " \
                       "4. Read a secret message \n " \
                       "5. Read Chats from a user \n " \
                       "6. Close Application \n"
        result = int(raw_input(menu_choices))
        # validating users input
        if (result == 1):
            current_status_message = add_status(current_status_message)
        elif (result == 2):
                number_of_friends = add_friend()
                print 'You have %d friends' % (number_of_friends)
        elif (result == 3):
            send_message()
        elif (result == 4):
            read_message()
        elif (result == 6):
            # close application
            show_menu = False
        else:
            print "wrong choice try again."
示例#24
0
def add_quote(s, message, game):
    global quotes
    try:

        currentdate = time.strftime("%d/%m/%Y")

        keyword = "!addquote "
        newquote = message[message.index(keyword) + len(keyword):]
        quotes[str(len(quotes) +
                   1)] = newquote + " [%s] [%s]" % (game, currentdate)
        with open(
                f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Quotes.txt',
                'a') as f:
            f.write("%s$%s [%s] [%s]\n" %
                    (len(quotes), newquote, game, currentdate))
        send_message(s, "Quote %d added!" % len(quotes))
    except Exception as errormsg:
        send_message(
            s, "There was an error adding this quote. Please try again!")
        errorlog(errormsg, "Quotes/addquote()", message)
示例#25
0
def addbet(s, message):
    global bets
    global timers
    try:
        addbet = message.split(' ')
        bets[addbet[1]] = addbet[2]
        t = threading.Timer((int(addbet[2]) * 60), announcer,
                            [s, addbet[1], addbet[2]])
        timers[addbet[1]] = t
        with open(
                f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Bets.txt",
                'w') as f:
            for key in bets:
                f.write(key + ":" + str(bets[key]) + "\n")
        send_message(
            s, "Bet for " + addbet[1] + " with " + addbet[2] +
            " minutes added to pool!")
    except Exception as errormsg:
        send_message(s, "Error adding bet for this user.")
        errorlog(errormsg, 'Bonertimer/addbet()', message)
示例#26
0
def rimworldautomessage(s):
    game = getgame(channel_id, client_id)

    url = 'https://api.twitch.tv/helix/streams?user_id=%s' % channel_id
    headers = {
        'Client-ID': client_id,
        'Accept': 'application/vnd.twitchtv.v5+json'
    }
    r = requests.get(url, headers=headers).json()
    response = r["data"]
    try:
        if response[0]["type"] == "live" and game == "RimWorld":
            send_message(s, messagetext)

    except IndexError:
        pass
    except Exception as errormsg:
        errorlog(errormsg, "Rimworldautomessage", '')
    finally:
        threading.Timer(900, rimworldautomessage, [s]).start()
示例#27
0
def remove_quote(s, message):
    global quotes
    try:
        messageparts = message.split(" ")
        del quotes[messageparts[1]]
        counter = 1
        with open(
                f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Quotes.txt',
                'w') as f:
            for key, val in quotes.items():
                f.write("%s$%s\n" % (counter, val))
                counter += 1
        quotes = {}
        with open(
                f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Quotes.txt'
        ) as f:
            for line in f:
                split = line.split("$")
                quotes[split[0]] = split[1].rstrip('\n')
        send_message(s, "Quote %s removed!" % messageparts[1])

    except Exception as errormsg:
        errorlog(errormsg, "Quotes/removequote()", message)
示例#28
0
def fidwins(s):
    global timeractive
    global timers
    global bets
    try:
        if timeractive:
            timeractive = False
            for t in list(timers.values()):
                t.cancel()
            time.sleep(1)
            timers = {}
            with open(
                    f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Titleholder.txt",
                    "w") as f:
                f.write("FideliasFK")
            timenow = datetime.time(datetime.now())
            timer = datetime.combine(date.today(), timenow) - datetime.combine(
                date.today(), starttime)
            endtime = str(timer).split(':')[1]
            if str(timer).split(':')[0] == '1':
                endtime += (int(endtime) + 60)
            if str(timer).split(':')[0] == '2':
                endtime += (int(endtime) + 120)
            send_message(s, "The timer is on " + endtime + " minute(s)!")
            send_message(
                s,
                "No boners have been broken this round. The winner is FideliasFK!"
            )
        else:
            send_message(s, "There is no timer active!")
    except Exception as errormsg:
        send_message(s, "Error lettting fid win.")
        errorlog(errormsg, 'Bonertimer/fidwins', '')
    else:
        with open(
                f'{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/PrevBets.txt',
                'a+') as f:
            f.write("\n" + "Bets ended on: " + str(time.strftime("%x")) + " " +
                    str(time.strftime("%X")) + "\n")
            f.write("Endtime: %s minutes\n" % endtime)
            for key in bets:
                f.write(key + ":" + str(bets[key]) + "\n")
        bets = {}
        with open(
                f"{os.path.dirname(os.path.dirname(__file__))}/{folder}/files/Bets.txt",
                'w') as f:
            f.write('')
示例#29
0
def question(s, message):
    try:
        if questions:
            randomindex = random.randint(1, len(questions))
            randomquestion = questions[str(randomindex)]
            send_message(s, "%s: %s" % (randomindex, randomquestion))
        else:
            send_message(s, "No questions yet!")
    except Exception as errormsg:
        errorlog(errormsg, "Question/question()", message)
        send_message(s, "Something went wrong, check your command.")
示例#30
0
def mybet(s, displayname):
    try:
        if bets.get(displayname):
            send_message(
                s, displayname + " your bet is: " +
                str(bets.get(displayname)) + " minutes!")
        else:
            send_message(s, "No bet registered!")
    except Exception as errormsg:
        send_message(s, "There was an error showing your bet!")
        errorlog(errormsg, 'Bonertimer/mybet()', '')