How to make a discord money bot - discord

So, I wanted to make a discord bot, where you can play with ingame-money, and can buy things with it. But the problem is, I have the money saved in a variable, so every player has the same money then, when anyone on the server modifies it. My question now is, how to make a variable for every player, that they have their own money, and no one else has acces to it.
(I am sorry if there are some grammar mistakes, I am not really good at english)

You need a structure to store user data in. If its just for one server I would use a JSON (python dict) to store in. If you are planning on using this bot in multiple servers or a very large server I would use a database such as SQLite.

Related

How to make sure two clients can't reach database at the same time (firebase real time database)?

I'm making a simple multiplayer card game and I have two clients without server so I need an idea to give an id for each clients while they are running the same code. One idea is to have them choose one from the database, then deleting (/marking) it before the other can choose the same. Sadly I don't know how to make sure the database is unreachable for the other client between the time the first client gets the id and deletes it.
I use rest api for unity desktop. If you can just help me what to google, it would be very helpful (I'm very new to databases). Thank you!

Mobile game tutorial, saved on local data or server?

I can't quite figure out what is the best approach to tutorials on mobile games. Should the tutorial progress and its features (or some of it) be stored locally on the device or should it all come from the server?
(if someone has a guest account and a facebook account he may face the tutorial twice should it all be stored on the server, mind you)
Thanks in advance
I have a mixture of the two but it gets in the way when I revisit it
The tutorial progression status is the part of the user progress. If you have any information about the user progress store tutorial status there.
The bigger problem though is user identification. Is this user someone who have played the game before or a newcomer? Is this registered user who we think it is or is it a different person? There is no other (feasible) way to confidently answer these questions, you can either make a guess based off the user behavior, or simply ask the user if he have played through the tutorial before. Or more correct if he wants to play it.

Store about and contacts in database

I want to know if it would make sense to store the website about text and contacts in a database instead of just writing it in the html, and how would I do that?
I've been thinking just one table for each with the information and no id (since I only want to store one version of everything), but that doesn't make a lot of sense, I think.
The about table should contain the text and the contacts should contain an address, coordinates, email and phone number.
Any suggestions?
The question might get flagged as off topic, but I have some thoughts. I would only put stuff in a database that would be updated frequently. Simply putting text in a DB that never really changes doesn't get you any benefit and just adds complexity and burden on your DB. If you find yourself copying the same web text to different pages of your site, make it text you include.
User information like logins,etc. that is added/updated/deleted should clearly live in a DB. But unless your About Us kind of data is going to be changed constantly or you make a tool that allows somebody else to update it, don't put that in the DB.

Right approach to building SAAS in Laravel 4

Ok, so about a year ago I wrote a web app that helps organize appointments for my dads company. He now "couldn't do business without it". I have decided that I want to build a SAAS subscription model out of it and open it up to the public.
It's currently built on codeigniter and php which I do not think is a good fit for a SAAS version. I am planning on rebuiling it from scratch in laravel 4 and using stripe as a payment gateway.
My concern is how best to handle the database / application structure for more than one client. Currently, it just serves the one business and is very un-abstract and is specific to my dads companies needs. I need it to be able to handle different data depending on what the business who uses it does.
I have looked into multi-tenancy but i'm not sure this is right for this. I am thinking that a 'gmail' style approach would be better. One app / domain that after login the user will see their customised dashboard and only their data.
Before I get stuck in with the coding I need to work out how best to handle multiple 'accounts' on the one database. I do not want to create a table for each user, nor a database for each user.
I guess my question is can anybody point me in the right direction for how best to handle a monthly payment subscription in Laravel? It's not so much the code that I'm stuggling with, rather what exactly I would need to build to handle charging the customer each month and denying them access if billing failed etc.
Thanks
You are in for a lot of reading and a ton of work!
First of all, let's completely ignore the billing aspect of this for now — at the end of the day that portion of the application is really fairly trivial. Take a page out of 37signals Rework (page 93 and 94) and launch your product with a 30 day free trial before you even begin implementing it (you should know how to implement it by then).
Second, why do you think that "gmail" doesn't use multi-tenancy, URI structure tells nothing about the underlying database structure. I'm fairly confident they aren't cloning a database schema for every one of their customers. Therefore you've probably answered your own question — you want to implement multi-tenancy.
You're going to want to abstract your database (and application architecture), and honestly there is no better resource to help you on your way to doing that than Taylor Otwell's (creator of Laravel) book Laravel: From Apprentice To Artisan. His book is not for beginners, and by the time you're done reading it you should probably be able to answer this question for yourself.
You are not going to be creating a table or a database for each user, you aren't even going to be creating one for each organization. Instead you'll be creating abstract database structure in code, which will pull your users data out of the database.
Think about checking for permission to access an organization as another layer of user authentication. On every request you'll be checking to see if that user can access a particular organization. You'll likely also check to ensure that organization is still active (did it expire because they didn't pay?) this will again happen on every request and likely with a filter within laravel.
This really leads to the next very important factor of developing a SaaS application.
I don't know about you, but I'm paranoid, and I couldn't sleep well at night if I wasn't sure that user number 4506 couldn't see the data of an organization that he doesn't belong to. The only really good way to ensure this is through unit testing, which I'd highly suggest learning if you haven't already.
The best way to do this within Laravel 4 is to read Jeffrey Way's book Laravel Testing Decoded. This book is extremely advanced, but still easy to understand if you have a good grasp of the fundamentals.
Last but not least, the number one thing is get involved in the community — the easiest way I'd suggest doing that is idling on the #laravel IRC channel (freenode). Ask some questions, maybe answer some questions, everyone in the channel is very nice and responsive.
You are definitely in for an adventure, don't be afraid to ask questions and make mistakes. Good luck.
As a rough overview, I would have a clients table, and a subscriptions table. Any other data that needs storing such as contacts, or appointments, can be associated using foreign keys to the client table.
In laravel, you can use the ORM to get the currently logged in client, and then through a relationship, fetch appointments and contacts belonging to them.
There are some useful tools for laravel at cartalyst.com, including sentry and sentry-social for user auth, and integrating user accounts with facebook/google/twitter, etc.
Stripe will allow you to configure recurring payments, and will notify you via web hooks each time there is a payment attempt. you can log these in the payments table, and associate them with a user/client. you can use this to keep track of who has paid, and how recently.
Also, bear in mind that you may not want to cancel the account immediately on failed payment.
Stripe will reattempt, and it may be that your best response is after it is two or three days late, or you get an invalid card notification,to get in touch with the client and prompt them to update their payment details.
It may also be an opportunity to check when they last logged in.
If it was over a month ago you can credit them with a free month, and remind them of how much your app can do for them.
By doing this, you may be able to get people to continue using (and paying) for something they had forgotten they had subscribed to.

C - Server/Client Tic-Tac-Toe Game - Read/Write index file?

I have both a client and server programs that allow users to connect to a server and play tic-tac-toe. However, I ran into a wall as to how to implement a sort of user record storage system for the server. What I mean by this is:
When a player connects to the server they are asked if they are a new player...if so then I want to create a new player record which consists of a username, first, and last name and record of wins/losses and ties (I know how to do this). That will be written to an index file. When an existing player connects to the server, they will enter only the username and the server will scan the index file for the player record and retrieve it. (Not really sure how to accomplish this)
When two consecutive players form a game, the opponent's record is displayed before the game starts. This is where I am having trouble... How do I scan the index file for an exisiting username and then retrieve its records. I then want to display the opponents records to eachother before the game starts.
I have so much code it would be a pain to post for you to read through. I've heard maybe semaphores or shared memory might solve my questions?
Thanks
Yeah I figured that might be the case...I was wondering if it was possibly without doing so...like strictly using read/writes
You really want to use a database for this. I'd recommend going with Sqlite.

Resources