def send_api(): data = request.json print(data) guild = discord.utils.find(lambda m: int(m.id) == int(data["guild"]), bot.guilds) #member = discord.utils.find(lambda m: m.id == data.person_id, guild.members) res =send(int(data["person_id"]), guild, data["from_wallet"], data["to_wallet"], data["amount"]) guild_collection =db[str(guild.id)] new_found_id = get_wallet(guild,data["to_wallet"])[1].id print(new_found_id,"new_found_id") new_wallet=guild_collection.find_one({"id":new_found_id}) print(new_wallet,"new_wallet") del new_wallet["_id"] return { "success":res[0], "message":res[1], "new_balance":new_wallet }
def userpass_put(data): return db.send("userpass","1",data)
def put(self,data): return db.send("userdata",self.email,data)
async def on_message(self, message): if message.guild is None: await message.author.send( "I can only respond to messages in guilds") return message.content = message.content.replace(" ", " ") person_roles = list(map(lambda role: role.id, message.author.roles)) server_members = list( map(lambda member: member.id, message.guild.members)) server_roles = list(map(lambda role: role.id, message.guild.roles)) person_id = message.author.id if (message.author.bot): return ##(guild, message, person_roles,server_members,server_roles,person_id) trigger_msg = database.trigger_messages(message.guild, message, person_roles, server_members, server_roles, message.author.id) #print(trigger_msg) if trigger_msg is not None: for i in trigger_msg: if (i[1]): if (not i[0]): await message.channel.send(embed=embeds.simple_embed( False, f'<@!{i[2]}> your smart contract was annuled: {i[1]}' )) else: await message.channel.send(embed=embeds.simple_embed( True, f'a smart contract said: {i[1]}')) answer = database.answer_question(message.author, message.content, message.guild) if answer is not None: await message.channel.send( embed=embeds.simple_embed(answer[0], answer[1])) if (message.content.startswith("$")): if (message.content.startswith("$smart-contract")): if (message.content.count("```") == 2): if (message.content.split("```")[0].count(" ") == 2): await message.channel.send(embed=embeds.simple_embed( True, database.write_contract( message.guild, message.author, message.content.split("```")[1], message.content.split( " ")[1], client, person_roles, server_members, server_roles, person_id)[1])) return if (commands.is_valid_command(message)): message_array = message.content.split(" ") message_command = message_array[0] if (message_command == "$help"): await message.channel.send(embed=embeds.simple_embed( "info", ''' - $help - shows all commands - $send (from wallet) (to wallet) (amount) - sends an amount to a person from that wallet - $print (wallet name) (amount) - creates an amount of money in that wallet if you have the role "printer" - $balance (wallet name) - returns the amount of money in the wallet - $links - show some links related to this bot - $smart-contract (trigger) (code block) - code a smart contract - $clear-contracts - delete all your smart contracts. - $create (ping wallet) - create an account - $whois (condition) - figure out who is a condition - $send-each (from wallet) (ammount) (condition) - send each person who meets a condition - $set-balance (ping wallet) - set the balance of a wallet for admins only - $set-balance-each (amount) (condition) - set the balance of each person who meets a condition - $wallet-settings (target person) (ping wallet) (setting name) (boolean) - change the setting, such as view or access, to allow certain people to do more with wallets - $trade (wallet) (wanted currency) (giving up currency) (optional limitations) - create a trade - $accept (message id of trade) (wallet) - accept a trade - $quiz - start a quiz based on a subject - $shop (item name) (price) - same as trade but only for admins and you can also offer roles as trades - $work - get an amount of money no strings attached - $work-conditional (level name) (work reward) (conditional) - allows admins to add levels to working and give different people different work rewards ''')) if (message_command == "$send"): #send(person_roles, server_members, server_roles, person_id, guild_id, from_wallet, to_wallet, amount) person_roles = list( map(lambda role: role.id, message.author.roles)) server_members = list( map(lambda member: member.id, message.guild.members)) server_roles = list( map(lambda role: role.id, message.guild.roles)) send_result = database.send(message.author.id, message.guild, message_array[1], message_array[2], message_array[3]) await message.channel.send(embed=embeds.simple_embed( send_result[0], send_result[1])) #if send_result[0]: # await message.channel.send(send_result[1]) #else: # await message.channel.send(f'an error occured {send_result[1]}') if (message_command == "$create"): result = database.create(message.guild, message_array[1]) await message.channel.send( embed=embeds.simple_embed(result[0], result[1])) if (message_command == "$balance"): ##guild,wallet,server_members, server_roles if len(message_array) == 1: message_array.append(message.author.mention) bal = database.get_balance(message.author, message.guild, message_array[1]) if (bal[0]): res = "" for key, value in bal[1].items(): if ("balance" in key): res = res + f'{key}: {value}\n' await message.channel.send(embed=embeds.simple_embed( True, f'the balance is:\n {res}')) else: await message.channel.send(embed=embeds.simple_embed( False, f'there was an error: {bal[1]}')) if (message_command == "$print"): ##(discord_client, guild_id, wallet, amount) result = database.print_money(message.author, message.guild, message_array[1], message_array[2]) await message.channel.send( embed=embeds.simple_embed(result[0], result[1])) if (message_command == "$clear-contracts"): database.clear_contracts(message.guild, message.author.id) await message.channel.send(embed=embeds.simple_embed( "info", "your contracts were all deleted")) if (message_command == "$links"): await message.channel.send(embed=embeds.simple_embed( "info", "Github - https://github.com/eulerthedestroyer/EU-Economy-Bot \n Discord link - https://discord.gg/ghFs7ZM \n Bot link - https://discord.com/api/oauth2/authorize?client_id=716434826151854111&permissions=268503104m&scope=bot \n Web interface - https://economy-bot.atticuskuhn.repl.co" )) if (message_command == "$config"): if message.author.guild_permissions.administrator: await message.channel.send( embed=embeds.simple_embed(*database.set_config( message.guild, message_array[1], message_array[2]))) else: await message.channel.send(embed=embeds.simple_embed( False, "you must be an administrator to access the config" )) if message_command.startswith("$stats"): result = methods.get_wallet(server_members, server_roles, message.guild.id, message_array[1]) if (result[0]): print(result) found_wallet = database.wallet_by_id( message.guild, result[1]) if "record" in found_wallet: fig = plt.figure(figsize=(10, 5)) X1 = list(found_wallet["record"].keys()) Y1 = list(found_wallet["record"].values()) plt.plot(X1, Y1, label="plot 1") fig.savefig('fig.jpg', bbox_inches='tight', dpi=150) await message.channel.send( file=discord.File('fig.jpg')) os.remove("fig.jpg") #await message.channel.send(found_wallet["record"]) else: await message.channel.send( embed=embeds.simple_embed( False, "can't find any stats")) else: await message.channel.send("error") if message_command == "$whois": people = methods.whois(message_array[1:], message.guild) return_statement = "" symbol = "\n" if len(people) > 7: symbol = "," for index, person in enumerate(people): if len(return_statement) > 700: return_statement += f' and {len(people)-index} others' break return_statement = return_statement + f'<@{person}>{symbol}' if return_statement == "": return_statement = "(no people found)" embedVar = discord.Embed( title="Result", description=f'Found {len(people)} People', color=0x00ff00) embedVar.add_field(name="People", value=return_statement, inline=False) await message.channel.send(embed=embedVar) if message_command == "$send-each": people = methods.whois(message_array[3:], message.guild) return_statement = "" successful_transfer = True for person in people: send_result = database.send(message.author.id, message.guild, message_array[1], f'<@{person}>', message_array[2]) if send_result[0]: return_statement = return_statement + f'<@{person}> - success\n' else: return_statement = return_statement + f'<@{person}> - error: {send_result[1]}\n' successful_transfer = False if return_statement == "": return_statement = "(no people found)" if successful_transfer: embedVar = discord.Embed(title="Result", color=0x00ff00) else: embedVar = discord.Embed(title="Result", color=0xff0000) embedVar.add_field(name="People", value=return_statement, inline=False) await message.channel.send(embed=embedVar) if message_command == "$set-balance": if (not message.author.guild_permissions.administrator): await message.channel.send( "you do not have administrator permissions") return result = database.set_money(message.guild, message_array[2], message_array[1]) await message.channel.send(embed=embeds.simple_embed( result[0], f'{result[0]}{result[1]}')) if message_command == "$set-balance-each": if (not message.author.guild_permissions.administrator): await message.channel.send( "you do not have administrator permissions") return people = methods.whois(message_array[2:], message.guild) return_statement = "" successful_transfer = True for person in people: send_result = database.set_money( message.guild, message_array[1], f'<@{person}>') if send_result[0]: return_statement = return_statement + f'<@{person}> - success\n' else: return_statement = return_statement + f'<@{person}> - error: {send_result[1]}\n' successful_transfer = False if return_statement == "": return_statement = "(no people found)" if successful_transfer: embedVar = discord.Embed(title="Result", color=0x00ff00) else: embedVar = discord.Embed(title="Result", color=0xff0000) embedVar.add_field(name="People", value=return_statement, inline=False) await message.channel.send(embed=embedVar) if message_command == "$wallet-settings": res = database.set_settings(message.guild, message.author, message_array[1], message_array[2], message_array[3], message_array[4]) await message.channel.send( embed=embeds.simple_embed(res[0], res[1])) if message_command == "$trade": res = database.insert_trade(message, message.author, message.guild, message_array[1], message_array[2], message_array[3], message_array[4:]) await message.channel.send( embed=embeds.simple_embed(res[0], res[1])) if res[0]: await message.add_reaction("✅") if message_command == "$accept": res = database.fulfill_trade(message_array[1], message_array[2], message.author, message.guild) await message.channel.send( embed=embeds.simple_embed(res[0], res[1])) if message_command == "$quiz": res = database.get_question(message.author, message.guild) await message.channel.send( embed=embeds.simple_embed(res[0], res[1])) if message_command == "$shop": if not message.author.guild_permissions.administrator: await message.channel.send(embed=embeds.simple_embed( False, "you must be an administrator to configure the shop" )) return res = database.insert_trade(message, message.author, message.guild, "admins", message_array[1], message_array[2], message_array[3:]) await message.channel.send( embed=embeds.simple_embed(res[0], res[1])) if res[0]: await message.add_reaction("✅") if message_command == "$work": res = database.work(message.author, message.guild) await message.channel.send(embed=embeds.simple_embed(*res)) if message_command == "$work-conditional": if not message.author.guild_permissions.administrator: await message.channel.send(embed=embeds.simple_embed( False, "you must be an administrator to configure conditional work rewards" )) return res = database.work_conditions(message.guild, message_array[1], message_array[2], message_array[3:]) await message.channel.send(embed=embeds.simple_embed(*res)) else: await message.channel.send(embed=embeds.simple_embed( False, "not valid command. If you want a list of all commands, type '$help' " ))
def main(): iterations = 1000000 #Number of times you want to play the game all_strengths = db.retrieve("ttt_state", "1") for i in range(iterations): all_strengths = play_game(all_strengths) db.send("ttt_state", all_strengths, "1")