Пример #1
0
def user_page():
    uses = Users(app.config['dsn'])
    if request.method == 'GET' and ('users_to_new' not in request.form):
        now = datetime.datetime.now()
        uselist = uses.get_userlist()
        return render_template('users.html', UserList = uselist, current_time=now.ctime())
    elif 'users_to_delete' in request.form:
        id_users = request.form.getlist('users_to_delete')
        for id_user in id_users:
            uses.delete_user(id_user)
        return redirect(url_for('user_page'))
    elif 'users_to_add' in request.form:
        uses.add_user(request.form['kuladi'],request.form['password'])
        return redirect(url_for('user_page'))
    elif 'users_to_update' in request.form:
        uses.update_user(request.form['id_user'], request.form['kuladi'],request.form['password'])
        return redirect(url_for('user_page'))
    elif 'users_to_search' in request.form:
            searchList = uses.search_user(request.form['name']);
            now = datetime.datetime.now()
            uselist = uses.get_userlist()
            return render_template('users.html', UserList = uselist, SearchList = searchList, current_time=now.ctime())
    elif 'users_to_new' in request.form:
        uses.add_user(request.form['user'],request.form['password'])
        return redirect(url_for('home_page2'))
Пример #2
0
def main():
    set_from_db.get_songs_from_file()
    set_from_db.get_users_from_file()
    # Users.initiate_users()
    # SongsList.initiate_songs()
    Users.add_user("eytan", "123")

    e = Users.get_user("eytan")

    e.change_password("123", "456")

    e.add_playlist("lala")
    e.add_playlist("lala2")

    p = e.get_playlist("lala")

    s1 = Song("hamilton", 2010, "rap", "lin manuel miranda")
    s2 = Song("hamilton_1", 2010, "rap", "lin manuel miranda")
    SongsList.add_song(s1)
    SongsList.add_song(s2)
    e.add_song_to_playlist("lala", "hamilton")
    e.add_song_to_playlist("lala", "hamilton_1")
    e.add_song_to_playlist("lala2", "hamilton_1")

    set_from_db.write_users_to_file()
    set_from_db.write_songs_to_file()
    print("h")
Пример #3
0
def register():
    form = RegistrationForm(request.form)
    if request.method == 'POST' and form.validate():
        user = Users(form.firstname.data, form.lastname.data, form.email.data, form.password.data)
        user.add_user(user)
        flash('Thanks for registering')
        return redirect('/')
    return render_template('register.j2', form=form)
Пример #4
0
 def test_add_multiple_users(self):
     '''
     test_add_multiple_users to check if we can save multiple user objects to our users_list
     '''
     self.new_user.add_user()
     test_user = Users("Alfred", "101")
     test_user.add_user()
     self.assertEqual(len(Users.users_list), 2)
Пример #5
0
    def test_user_exists(self):
        '''
        test to see if a true is returned when a user exists and false otherwise
        '''
        self.new_user.add_user()
        test_user = Users("Alfred", "101")
        test_user.add_user()

        user_exists = Users.user_exists("Alfred", "101")
        self.assertTrue(user_exists)
Пример #6
0
    def test_find_user_by_username(self):
        '''
        test to check if we can find a user by username
        '''
        self.new_user.add_user()
        test_user1 = Users("Wanjiru", "1")
        test_user1.add_user()

        found_user = Users.find_by_username("Wanjiru")
        self.assertEqual(found_user.login_password, test_user1.login_password)
Пример #7
0
def get_users_from_source(users):
    Users.initiate_users()
    for k, v in users.items():
        name = v['name']
        password = v['password']
        Users.add_user(name, password, True)
        user = Users.get_user(name)
        user.friends = v['friends']
        for playlist_name, songs in v['playlists'].items():
            user.add_playlist(playlist_name)
            for song in songs:
                user.add_song_to_playlist(playlist_name, song)
Пример #8
0
    def test_remove_users(self):
        '''
        test_remove_users to test if we can remove a user from our user list
        '''
        self.new_user.add_user()
        test_user = Users("Alfred", "101")
        test_user.add_user()
        test_user1 = Users("Wanjiru", "1")
        test_user1.add_user()

        test_user.delete_user()
        self.assertEqual(len(Users.users_list), 2)
Пример #9
0
class Users_Test(unittest.TestCase):
    def setUp(self):
        self.uzytkownicy = Users()
        self.uzytkownicy.add_user('Marta', 'm')
        self.uzytkownicy.add_user('Julia', 'j')

    def test_add_user(self):
        Users.add_user(self.uzytkownicy, 'Zuza', 'z')
        self.assertEqual(Users.show_users(self.uzytkownicy),
                         'Marta, Julia, Zuza')

    def test_delete_user(self):
        Users.delete_user(self.uzytkownicy, 'Julia', 'j')
        self.assertEqual(Users.show_users(self.uzytkownicy), 'Marta')
Пример #10
0
class UserManagementTestcase(unittest.TestCase):

    def setUp(self):
        self.user = Users()
        self.current_user = USERS
        self.email = "*****@*****.**"
        self.username = "******"
        self.password = "******"


        def test_if_user_added(self):
            test_user = self.user.add_user(self.user_email, self.username, self.password)
            self.assertEqual(test_user, "User added successfully.")
Пример #11
0
def add_user():
    user_name = request.json.get("user_name")
    user_password = request.json.get("user_password")

    valid = validations.valid_parameters(user_name=user_name,
                                         user_password=user_password)
    if valid != True:
        return valid

    user = Users.add_user(user_name, user_password)

    if user is None:
        return {"error": f"user with name {user_name} already exists."}

    set_from_db.write_users_to_file()

    return {"messgae": "OK", "data": user}
Пример #12
0
def interaction():
    print(
        'Witaj w programie, w którym zaplanujesz swój budżet. W razie problemów wpisz "help".'
    )

    if os.path.exists('Uzytkownicy'):
        with open('Uzytkownicy', 'rb') as o:
            uzytkownicy = pickle.load(o)
    else:
        uzytkownicy = Users()

    help = '1 - Utwórz profil \n2 - Usuń profil \n3 - Wyświetl nazwy użytkowników \n4 - Wybierz profil (zaloguj się) ' \
           '\n5 - Przypomnij hasło \n6 - Zakończ program\n'

    while True:
        wybor = input('Co chcesz zrobić?   ').lower()

        #pomoc
        if wybor == 'help':
            print(help)

        # tworzenie profilu
        elif wybor == '1':
            try:
                login = input('Podaj login: '******'Podaj hasło: ')
                # jeśli ktoś z takim loginem już istnieje: błąd
                if login in uzytkownicy.logins:
                    raise ValueError
                # gdy nie było jeszcze takiego loginu
                else:
                    uzytkownicy.add_user(login, haslo)
                    print('Użytkownik został dodany\n')
                    with open(login + '_pass', 'wb') as g:
                        pickle.dump(haslo, g)
            except ValueError:
                print(
                    'Użytkownik o podanym loginie już istnieje. Spróbuj jeszcze raz.\n'
                )

        # koniec programu
        elif wybor == '6':
            odp = input(
                'Czy na pewno chcesz wyjść z programu? T/N     ').upper()
            if odp == 'T':
                with open('Uzytkownicy', 'wb') as u:
                    pickle.dump(uzytkownicy, u)
                return
            else:
                pass

        # usuwanie profilu
        elif wybor == '2':
            try:
                login = input(
                    'Podaj login użytkownika, którego chcesz usunąć (UWAGA: Ta operacja usunie wszystkie dane '
                    'związane z podanym profilem): ')
                if login in uzytkownicy.logins:
                    haslo = input('Podaj hasło: ')
                    uzytkownicy.delete_user(login, haslo)
                    print('Użytkownik został usunięty\n')
                    # usuwamy informacje o uzytkowniku (login, haslo, budzet)
                    if os.path.exists(login + '_pass'):
                        os.remove(login + '_pass')
                    if os.path.exists(login + '_budget'):
                        os.remove(login + '_budget')
                else:
                    raise ValueError
            except ValueError:
                print(
                    'Użytkownik o podanym loginie nie istnieje lub wprowadzone hasło jest nieprawidłowe. '
                    'Spróbuj jeszcze raz.\n')

        # wyświetlanie obecnych użytkowników
        elif wybor == '3':
            if len(uzytkownicy.logins) == 0:
                print('Brak użytkowników\n')
            else:
                print('Obecni użytkownicy to: ' + uzytkownicy.show_users() +
                      '\n')

        # przypomnienie hasła
        elif wybor == '5':
            try:
                login = input('Podaj login: '******'_pass'):
                    with open(login + '_pass', 'rb') as g:
                        haslo = pickle.load(g)
                        print('Twoje hasło to: ' + haslo)
                else:
                    raise ValueError
            except ValueError:
                print(
                    'Użytkownik o podanym loginie nie istnieje. Spróbuj jeszcze raz.'
                )

        # logowanie się na konto
        elif wybor == '4':
            try:
                login = input('Podaj login: '******'Podaj hasło: ')
                if os.path.exists(login + '_pass'):
                    with open(login + '_pass', 'rb') as p:
                        check = pickle.load(p)
                        if haslo == check:
                            if login not in uzytkownicy.logins:
                                uzytkownicy.add_user(login, haslo)
                            user = uzytkownicy.select_user(login, haslo)
                            print(
                                'Pomyślne zalogowanie do programu. W razie problemów, wpisz help.\n'
                            )
                        else:
                            raise ValueError
                else:
                    raise ValueError

                help2 = '\n1 - Zmień hasło \n2 - Dodaj transakcję' \
                        '\n3 - Pokaż wszystkie transakcje \n4 - Pokaż budżet \n5 - Pokaż ostrzeżenia ' \
                        '\n6 - Pokaż tabelę \n7 - Wyczyść cały budżet ' \
                        '\n8 - Wróć do poprzedniego menu \n9 - Zapisz zmiany \n10 - Stwórz przykładowy budżet '

                # wczytujemy budżet użytkownika, jeśli już istnieje
                if os.path.exists(user.login + '_budget'):
                    with open(user.login + '_budget', 'rb') as h:
                        budzet = pickle.load(h)
                        user.budzet = budzet

                while True:
                    wybor2 = input('Co dalej?     ').lower()

                    # pomoc
                    if wybor2 == 'help':
                        print(help2)

                    # powrót do poprzedniego menu
                    elif wybor2 == "8":
                        odp = input('Pamiętaj, aby zapisać zmiany! Czy na pewno chcesz wrócić do poprzedniego menu? T/N ')\
                            .upper()
                        if odp == 'T':
                            break
                        elif odp == 'N':
                            pass

                    elif wybor2 == '10':
                        n = int(
                            input(
                                'Podaj przykładową liczbę transakcji w miesiącu:  '
                            ))
                        example = Generator(n)
                        example.simulation()

                    # zapisywanie zmian
                    elif wybor2 == '9':
                        # zapisujemy budżet użytkownika
                        with open(user.login + '_budget', 'wb') as f:
                            pickle.dump(user.budzet, f)

                        # zapisujemy ramki danych
                        fig = plt.figure(facecolor='w', edgecolor='k')
                        sns.heatmap(user.budzet.show_df_inc(),
                                    annot=True,
                                    cmap='viridis',
                                    cbar=False)
                        plt.savefig(user.login + '_inc')

                        fig = plt.figure(facecolor='w', edgecolor='k')
                        sns.heatmap(user.budzet.show_df_exp(),
                                    annot=True,
                                    cmap='viridis',
                                    cbar=False)
                        plt.savefig(user.login + '_exp')

                        fig = plt.figure(facecolor='w', edgecolor='k')
                        sns.heatmap(user.budzet.show_df_details(),
                                    annot=True,
                                    cmap='viridis',
                                    cbar=False)
                        plt.savefig(user.login + '_details')

                        # zapisywanie wykresów
                        user.budzet.show_pieplot()
                        plt.savefig(user.login + '_pie')
                        user.budzet.show_barplot()
                        plt.savefig(user.login + '_bar')

                    # zmiana hasła
                    elif wybor2 == '1':
                        try:
                            password = input('Podaj obecne hasło: ')
                            password2 = input('Podaj nowe hasło: ')
                            uzytkownicy.change_pass(user.login, password,
                                                    password2)
                            print('Hasło zostało zmienione\n')
                            with open(user.login + '_pass', 'wb') as g:
                                pickle.dump(password2, g)
                        except ValueError:
                            print('Spróbuj ponownie\n')

                    # wprowadzenie transakcji / dodanie kategorii
                    elif wybor2 == '2':
                        print(user.budzet.kategorie)
                        typ = input('Wydatek czy przychód? (W/P) ').upper()

                        if typ == 'P':
                            dzialanie = input('Aby dodać nową kategorię wciśnij K, aby wprowadzić przychód wciśnij P:   ')\
                                .upper()
                            if dzialanie == 'K':
                                try:
                                    new_cat = input('Podaj nową kategorię:  ')
                                    user.budzet.add_inc_cat(new_cat)
                                    print('Pomyślnie dodano nową kategorię.')
                                except ValueError:
                                    print(
                                        'Podana kategoria już istnieje. Spróbuj jeszcze raz.'
                                    )
                            elif dzialanie == 'P':
                                try:
                                    category = input('Podaj kategorię: ')
                                    t = input(
                                        'Podaj typ budżetu (r/p): ').lower()
                                    amount = float(input('Podaj kwotę: '))
                                    day = int(input('Podaj dzień: '))
                                    user.add_inc(category, t, amount, day)
                                    print('Dodano nowy przychód')
                                except ValueError:
                                    print(
                                        'Coś poszło nie tak... Spróbuj jeszcze raz.'
                                    )
                            else:
                                print(
                                    'Masz do wyboru literkę P lub K. Spróbuj ponownie.'
                                )

                        elif typ == 'W':
                            dzialanie2 = input(
                                'Aby dodać nową kategorię wciśnij K, aby wprowadzić wydatek wciśnij W:   '
                            ).upper()
                            if dzialanie2 == 'K':
                                try:
                                    new_cat = input('Podaj nową kategorię:  ')
                                    user.budzet.add_exp_cat(new_cat)
                                    print('Pomyślnie dodano nową kategorię')
                                except ValueError:
                                    print(
                                        'Podana kategoria już istnieje. Spróbuj jeszcze raz.'
                                    )
                            elif dzialanie2 == 'W':
                                try:
                                    category = input('Podaj kategorię: ')
                                    t = input(
                                        'Podaj typ budżetu (r/p): ').lower()
                                    amount = float(input('Podaj kwotę: '))
                                    day = int(input('Podaj dzień: '))
                                    user.add_exp(category, t, amount, day)
                                    print('Dodano nowy wydatek')
                                except ValueError:
                                    print(
                                        'Coś poszło nie tak... Spróbuj jeszcze raz.'
                                    )
                            else:
                                print(
                                    'Masz do wyboru literkę W lub K. Spróbuj ponownie.'
                                )

                    # pokaż wszystkie transakcje
                    elif wybor2 == '3':
                        print(user.show_trans())

                    # pokaż inf. o budżecie
                    elif wybor2 == '4':
                        print(user.show_budget())

                    # pokaż ostrzeżenia
                    elif wybor2 == '5':
                        print(user.show_warnings())

                    # pokaż tabelę
                    elif wybor2 == '6':
                        tab = input(
                            'Przychodów (P), wydatków (W) czy wydatków dzień po dniu (D)?'
                        ).upper()
                        if tab == 'P':
                            print(user.budzet.show_df_inc())
                        elif tab == 'W':
                            print(user.budzet.show_df_exp())
                        elif tab == 'D':
                            print('Wybierz zakres dni:')
                            try:
                                a = int(input('od: '))
                                if a < 1 or a > 31:
                                    raise ValueError
                                b = int(input('do: '))
                                if b < 1 or b > 31:
                                    raise ValueError
                                print(user.budzet.show_selected_days(a, b))
                            except ValueError:
                                print(
                                    'Podano nieprawidłowy zakres (0 < a,b < 31). Spróbuj jeszcze raz.'
                                )
                        else:
                            print(
                                'Masz do wyboru literki: P/W/D. Spróbuj ponownie.'
                            )

                    elif wybor2 == '7':
                        answer = input(
                            'Czy jesteś pewny, że chcesz usunąć wszystkie dane ze swojego budżetu? (T/N)'
                        ).upper()
                        if answer == 'T':
                            user.clear_budget()
                        elif answer == 'N':
                            pass

                    else:
                        print('Wspomóż się poleceniem "help"\n')

            except ValueError:
                print(
                    'Użytkownik o podanym loginie nie istnieje lub wprowadzone hasło jest nieprawidłowe. Spróbuj jeszcze raz.\n'
                )

        else:
            print('Wspomóż się poleceniem "help"\n')
Пример #13
0
class Bot(object):
    def __init__(self, configpath, userspath):
        self.log = Log(configpath)
        self.config = Config(configpath)
        self.users = Users(userspath)
        self.updater = None
        self.dispatcher = None

    def init_updater(self):
        try:
            self.updater = Updater(token=self.config.get_value("BOT", "token"),
                                   use_context=True)
            self.dispatcher = self.updater.dispatcher
            return self.dispatcher
        except Exception as exc:
            self.log.LOGGING.error(
                "Whoops. We failed to set up the updater. Error: {}".format(
                    exc))

    def init_handler(self):
        start_handler = CommandHandler('start', self.start)
        subscribe_handler = CommandHandler('subscribe', self.subscribe)
        unsubscribe_handler = CommandHandler('unsubscribe', self.unsubscribe)
        # TODO: help command
        self.dispatcher.add_handler(start_handler)
        self.dispatcher.add_handler(subscribe_handler)
        self.dispatcher.add_handler(unsubscribe_handler)

    def start_bot(self):
        thread = Thread(target=self.updater.start_polling, args=())
        thread.start()

    def start(self, update, context):
        text = """
        Hi there! Welcome to the **Heise Online Telegram News Bot**.
Please note that the bot was **not** build by Heise Online itself.
You can view the source on GitHub: https://github.com/jpylypiw/heise-online-news-telegram-bot

**Commands the bot can execute:**
/subscribe - this starts the news subscription
/unsubscribe - this stops the automatic news sent to you

If you don't want to use the bot anymore, just delete the chat.
        """
        self.send_message(update.effective_chat.id, text,
                          context.bot.send_message)

    def subscribe(self, update, context):
        succeeded = self.users.add_user(update.effective_chat.id)
        if succeeded:
            text = """
Thank you for subscribing to the news!
We will send you the next news when we got some.
            """
        else:
            text = """
You have already subscribed to the news.
            """
        self.send_message(update.effective_chat.id, text,
                          context.bot.send_message)

    def unsubscribe(self, update, context):
        self.users.remove_user(update.effective_chat.id)
        text = """
You successfully unsubscribed from the list.
Thanks for using Heise Online News Bot!
You will no longer receive any messages.
        """
        self.send_message(update.effective_chat.id, text,
                          context.bot.send_message)

    def send_message(self,
                     chat_id,
                     text,
                     func,
                     parse_mode="Markdown",
                     disable_web_page_preview=True):
        try:
            func(chat_id=chat_id,
                 text=text,
                 parse_mode=parse_mode,
                 disable_web_page_preview=disable_web_page_preview)
        except Exception as exc:
            self.log.LOGGING.error("Error sending message: {}".format(exc))
Пример #14
0
 def test_add_user(self):
     Users.add_user(self.uzytkownicy, 'Zuza', 'z')
     self.assertEqual(Users.show_users(self.uzytkownicy),
                      'Marta, Julia, Zuza')
Пример #15
0
class TestUsers(unittest.TestCase):
    '''
    Test class that defines test cases for the Users class behaviours
    
    Args:
        unittest.TestCase: TestCase class that helps in creating test cases
    '''
    def setUp(self):
        '''
        Set up method to run before each test cases
        '''
        self.new_user = Users("Lorna", "97")

    def test_initialization(self):
        '''
        test_initialization case to test whether the object is being initialised properly
        '''
        self.assertEqual(self.new_user.username, "Lorna")
        self.assertEqual(self.new_user.login_password, "97")

    def test_add_user(self):
        '''
        test_add_user test case to test if the contact object is saved into the users list
        '''
        self.new_user.add_user()
        self.assertEqual(len(Users.users_list), 1)

    def tearDown(self):
        '''
        tearDown method that does clean up after each test case has run
        '''
        Users.users_list = []

    def test_add_multiple_users(self):
        '''
        test_add_multiple_users to check if we can save multiple user objects to our users_list
        '''
        self.new_user.add_user()
        test_user = Users("Alfred", "101")
        test_user.add_user()
        self.assertEqual(len(Users.users_list), 2)

    def test_remove_users(self):
        '''
        test_remove_users to test if we can remove a user from our user list
        '''
        self.new_user.add_user()
        test_user = Users("Alfred", "101")
        test_user.add_user()
        test_user1 = Users("Wanjiru", "1")
        test_user1.add_user()

        test_user.delete_user()
        self.assertEqual(len(Users.users_list), 2)

    def test_find_user_by_username(self):
        '''
        test to check if we can find a user by username
        '''
        self.new_user.add_user()
        test_user1 = Users("Wanjiru", "1")
        test_user1.add_user()

        found_user = Users.find_by_username("Wanjiru")
        self.assertEqual(found_user.login_password, test_user1.login_password)

    def test_user_exists(self):
        '''
        test to see if a true is returned when a user exists and false otherwise
        '''
        self.new_user.add_user()
        test_user = Users("Alfred", "101")
        test_user.add_user()

        user_exists = Users.user_exists("Alfred", "101")
        self.assertTrue(user_exists)
Пример #16
0
class Dkp(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.users = Users('users.dat')
        bot.loop.create_task(self.auto_load())

    async def auto_load(self):
        await self.bot.wait_until_ready()
        while True:
            print('Updating users')
            self.users.users = self.users.load_users()
            await asyncio.sleep(60)

    #Admin/Gm/Lootmaster commands------------------

    @commands.command()
    @commands.has_permissions(administrator=True)
    async def givedkp(self, ctx, user: str, amount: int):
        '''
        Gives <Amount> of DKP to user out of thin air.
        '''
        print(str(user))
        recipient = self.users.find_user(user)
        recipient.dkp += amount
        self.users.save_users()
        await ctx.send('<@' + str(ctx.author.id) + '> Awarded ' +
                       recipient.id + ' ' + str(amount) + ' DKP!')

    @commands.command()
    @commands.has_permissions(administrator=True)
    async def takedkp(self, ctx, user: str, amount: int):
        '''
        Takes <Amount> of DKP from user.
        '''
        #THATS A F*****G 50DKP MINUS!!
        print(str(user))
        recipient = self.users.find_user(user)
        if recipient.dkp >= amount:
            recipient.dkp -= amount
            await ctx.send('<@' + str(ctx.author.id) + '> Removed ' +
                           str(amount) + ' DKP from ' + recipient.id + '!')
        else:
            recipient.dkp = 0
            await ctx.send('<@' + str(ctx.author.id) + '> Rinsed all of ' +
                           recipient.id + '\'s DKP!')

        self.users.save_users()

    @commands.command()
    @commands.has_permissions(administrator=True)
    async def dkp_a(self, ctx):
        '''
        Returns entire guild's DKP balance.
        '''
        usersout = '```\n'
        for user in self.users.users:
            usersout += user.wow_name + '\'s DKP Balance: ' + str(
                user.dkp) + ' DKP\n'
        usersout += '```'
        await ctx.send(usersout)


#End of admin only commands:----------------

    @commands.command()
    async def setmain(self, ctx, character: str):
        '''
        Allows you to set the character name of your WoW Classic main.
        Useage: !setmain <Charactername>
        '''

        usr_id = '<@' + str(ctx.author.id) + '>'
        usr_name = str(ctx.author)
        wow_name = character

        saving = True
        updating = False

        for user in self.users.users:
            if user.id == usr_id:
                await ctx.send('<@' + str(ctx.author.id) +
                               '> You\'ve already set your main!')
                saving = False
                updating = True
                #Already set main.
            if user.wow_name == wow_name:
                await ctx.send('<@' + str(ctx.author.id) +
                               '> That WoW Name has already been set!')
                saving = False
        if saving:
            self.users.add_user(usr_id, usr_name, wow_name)
            await ctx.send('<@' + str(ctx.author.id) +
                           '> your main has been set to ' + character)
            role = discord.utils.get(ctx.author.guild.roles, name="Peon")
            #Assign peon role automatically.
            await ctx.author.add_roles(role)
        elif updating:
            user = self.users.find_user(ctx.author.id)
            if user:
                if wow_name not in self.users.users:
                    if user.wow_name != wow_name:
                        user.wow_name = wow_name
                        self.users.save_users()
                        await ctx.send('<@' + str(ctx.author.id) +
                                       '> Main updated to: ' + wow_name)

    @commands.command()
    async def dkp(self, ctx):
        '''
        Prints your DKP balance.
        Usage: !dkp
        '''
        user = self.users.find_user(ctx.author.id)
        if user is not False:
            await ctx.send('```\n' + user.wow_name + '\'s DKP Balance:\n' +
                           str(user.dkp) + '\n```')
        else:
            print(
                'Have you set your WoW Main character yet? Try !setmain <character>'
            )

        # for user in self.users.users:
        #     if user.id == ('<@'+str(ctx.author.id)+'>'):
        #         await ctx.send('```\n'+user.wow_name+'\'s DKP Balance:\n'+ str(user.dkp) +'\n```')

    @commands.command()
    async def transferdkp(self, ctx, recipient: str, amount: int):
        '''
        Allows you to transfer DKP to another user.
        Recieving user must have !setmain\'ed, otherwise transaction will fail.
        Usage: !transferdkp @User <Amount>
        '''
        #Nicknames contain a !, if this is the case remove it.
        if (recipient[2] == '!'):
            # recipient = recipient[0:2] + recipient[3:]
            recipient.replace('!', '')

        #Checks
        sender = self.users.find_user(ctx.author.id)
        if sender is not False:
            if sender.dkp >= amount:
                recip = self.users.find_user(recipient)
                if recip is not False:
                    #do transfer
                    recip.dkp += amount
                    sender.dkp -= amount
                    self.users.save_users()
                    await ctx.send(sender.id + ' Successfully transferred ' +
                                   str(amount) + ' DKP to ' + recipient)
                else:
                    await ctx.send(
                        recipient +
                        ' Has not yet !setmained, so cannot recieve DKP.')
            else:
                await ctx.send(
                    sender.id +
                    ' You do not have enough DKP for this transaction.')
        else:
            await ctx.send(
                sender.id +
                ' You have not yet used !setmain to set your character name.  Do this to start transferring DKP.'
            )