diff --git a/bot_newest_version/susmain3.py b/bot_newest_version/susmain3.py new file mode 100644 index 0000000..a55dece --- /dev/null +++ b/bot_newest_version/susmain3.py @@ -0,0 +1,318 @@ +import discord, time, random, os +from discord.ext import commands + + +t_h = 0 +t_s = 0 + + +intents = discord.Intents.default() +intents.messages = True +intents.members = True +client = commands.Bot(command_prefix = '~', intents=intents) + +############################################################################################################## +##################################### COMMNADS AND FUNCTIONS SCRIPTS ######################################### +############################################################################################################## +async def word_counter(message): #counts words in word list + for slovo in slova: + if slovo in message.content.lower() and message.content[0] != '~': + + msg_author_id = str(message.author.id) + + count = message.content.lower().count(slovo) + + file_path = str("word_counts/" + slovo + '_' + msg_author_id + ".txt") + + if os.path.exists(file_path): + pass + + else: + file = open(file_path, 'w') + file.write("0") + file.close() + + pocet = open(file_path, 'r').read() + pocet = int(pocet) + count + file = open(file_path, 'w') + file.write(str(pocet)) + file.close() + print("added in", file_path, count, ", celkove", open(file_path, "r").read()) + + else: + pass + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def count_reader(message): #count command returns message with counts of certain word of all users + obsah = message.content.lower().split(' ') + files = [] + user_counts = [] + msg = '' + + if len(obsah) != 2: + print('function ~count got ivalid input:', message.content) + await message.channel.send('invalid input') + return + + else: + slovo = obsah[1] + + if slovo in slova: + directory = os.walk('word_counts') + + for file_path in directory: + for path in file_path[2]: + + if path.startswith(slovo): + files.append(path) + + else: + pass + else: + print('word in not in word list') + await message.channel.send('word is not in word list') + return + + if files == []: + print('word is in the list, but there are no records') + await message.channel.send('word is in the list, but there are no records') + return + + else: + for filey in files: + + split_filey = filey.split('_') + + userid = split_filey[1].split('.') + userid = userid[0] + + path = 'word_counts/' + filey + usercount = open(path, 'r').read() + + user = client.get_user(int(userid)) #needs to be where the client runs (main.py) + + user_counts.append([user.name, int(usercount)]) + + user_counts.sort(key=lambda x:x[1]) + + for g in range(len(user_counts)): + g = len(user_counts) - g - 1 + msg += str(user_counts[g][0]) + ' ---> ' + str(user_counts[g][1]) + '\n' + + await message.channel.send(msg) + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def primenum_event(message): #primenumbers script + + vstup = int(message.content.split("~primenum ",1)[1]) + + print('number:', vstup) + + delitel = 1 + vst_up = int(vstup / 2) #vstup děleno dvěmi + nasel = 0 + + if vstup >= 999999: + answer = 'Too big number.' + nasel = 3 + + elif vstup == 2: + answer = str('\nNumber %d IS a prime number.' % (vstup)) + + + else: + vystup = str('Number %d is divisible by:' % (vstup)) + while delitel <= vst_up: + delitel = delitel + 1 + deleno = vstup / delitel + + if deleno == int(deleno): + if delitel == 2: + answer = str('Number %d is divisible by two...' % (vstup)) + nasel = 3 + break + vystup = vystup + "\n " + str(int(deleno)) + nasel = 1 + + if nasel == 0: + answer = str('Number %d IS a prime number.' % (vstup)) + + elif nasel == 1: + answer = vystup + str('\nNumber %d IS NOT a prime number.' % (vstup)) + + await message.channel.send(answer) + print('Bot send:', answer) + + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def scprove_event(message): #scientists prove that... script + + input_message = str(message.content.split('~scprove',1)[1]) + + output = str('Scientists prove that') + input_message + ('.') + print('Bot send:', output) + await message.channel.send(output) + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def help_event(message): #help script + cc = '' + ff = '' + for C in command_list.values(): + cc = cc + C.help_print() + for C in function_list.values(): + ff = ff + C.help_print() + final_message = '**__Commands__:**\n' + cc + '**__Functions__:**\n' + ff + await message.channel.send(final_message) + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def etime_event(message): #epoch time script + await message.channel.send(time.time()) + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def greetings_function(message): #greetings function + if t_h + 30 < time.time(): + for g in greetings: + if message.content.lower().startswith(g): + await message.channel.send('Hello') + print('Expressed greetings to:', message.author.name, '(id:', message.author.id,')') + t_h = time.time() + else: + pass + else: + pass + +# +# +# +# +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +async def sus_function(message): #sus function + if t_s + 20 < time.time(): + if ('sus') in (message.content).lower() and message.content[0] != '~': + await message.channel.send(sus_responses[random.randrange(0,len(sus_responses))]) + print('Detected sus from:', message.author.name, '(id:', message.author.id, ')') + t_s = time.time() + else: + pass + else: + pass + +############################################################################################################## +##################################### FUNCTIONS AND COMMANDS HUB ############################################# +############################################################################################################## + +class Command: + def __init__(self, caller, desc, script): + self.caller = caller + self.desc = desc + self.script = script + def help_print(self): + return ('%s %s' % (self.caller, self.desc)) + +class Function: + def __init__(self, caller, desc): + self.caller = caller + self.desc = desc + def help_print(self): + return ('%s %s' % (self.caller, self.desc)) + + +function_list = {} + + +function_list['sus'] = Function(' sus', ' --> Bot knows when something is sus\n') + +function_list['hello'] = Function(' greetings', ' --> Bot greets you back\n') + +function_list['counter'] = Function(' word counter', ' --> Bot counts how many times you have written certain words') + +command_list = {} + + +command_list['~etime'] = Command('~etime', ' --> Command that will tell you epoch time\n', etime_event) + +command_list['~help'] = Command('~help', ' --> Command that will show you this list\n', help_event) + +command_list['~primenum'] = Command('~primenum', ' --> Bot will tell you if number is a prime number (number of six digits max.)\n', primenum_event) + +command_list['~scprove'] = Command('~scprove', ' --> Scientist will prove you anything: |*~scprove *|\n', scprove_event) + +command_list['~count'] = Command('~count', ' --> Ask for word count of users: |*~count *|\n\n', count_reader) + + + +slova = ["nigga", "negr", "debil", "gay", "kokot", "ok", "kurva", "sus", "petr", "gej", "bruh", "bružek"] #words bot recognize and count + +sus_responses = ["it's getting sus here", "sus", "you are sussy", "sussy baka", "that is kinda sus", "that is sus", "you're seeming sus lately", "seems sus", "SUS", "gobus amogus", "amongsus", "sussy ah", "sussy"] #variety of responses when sus detection + +greetings =['čau', 'ahoj', 'hi', 'hello', 'high', 'čauky', 'nazdar', 'dobrý den','helou'] #greetings which bot will reply to + +############################################################################################################## +##################################### RUNNING THE FUNCTIONS AND COMMANDS ##################################### +############################################################################################################## + +@client.event #ready message cmd +async def on_ready(): + print("Logged in as {0.user}".format(client)) + + +@client.event #on message actions +async def on_message(message): + global t_h, t_s + if message.author == client.user: + return +# else: + +# await(greetings_function(message)) + +# await(sus_function(message)) + +# await(word_counter(message)) + +@client.command() +async def count(ctx, *, arg): + await(count_reader(arg)) + +# +# +# +#accesing functions and commands hub to run commands +# if message.content.startswith('~'): +# for cmd in command_list.keys(): +# if message.content.lower().startswith(cmd): +# c = command_list[cmd] +# print(message.author.name, '(id:', message.author.id, ')', 'called',c.caller) +# await c.script(message) +# break +# +# else: +# pass +# else: +# pass + +TOKEN = open("../sus_bot_token.txt", 'r').read() +client.run(TOKEN) diff --git a/bot_newest_version/susmain2_2.py b/versions/susmain2_2.py similarity index 99% rename from bot_newest_version/susmain2_2.py rename to versions/susmain2_2.py index 97ea54a..8b72e72 100644 --- a/bot_newest_version/susmain2_2.py +++ b/versions/susmain2_2.py @@ -243,16 +243,16 @@ async def on_message(message): # # #hello easy function, not in functions_hub - for g in greetings: - if t_h + 30 < time.time(): + if t_h + 30 < time.time(): + for g in greetings: if message.content.lower().startswith(g): await message.channel.send('Hello') print('Expressed greetings to:', message.author.name, '(id:', message.author.id,')') t_h = time.time() else: pass - else: - pass + else: + pass #