Ejemplo n.º 1
0
def send_text(message):
    # основная функция, отвечает за действия после нажатия кнопок
    if message.text == '👤 Account':  # если юзер нажимает на аккаунт
        account_user = message.from_user.id
        needed = account.account_func(
            account_user, message)  # подкачивается функция из файла аккаунт
        bot.send_message(message.chat.id,
                         needed,
                         reply_markup=KEYBOARD_ACCOUNT)
    elif message.text == '❓ Get Support':  # если нажимает саппорт, подкачивает из файла аккаунта саппорт
        bot.send_message(message.chat.id,
                         account.support_func(),
                         reply_markup=KEYBOARD_FOR_ALL)
    elif message.text == '🔁 Change Your Bitcoin Wallet':  # если нажимает поменять биткоин адрес
        bot.send_message(message.chat.id,
                         'Update your BTC address:',
                         reply_markup=KEYBOARD_CANCEL)
        bot.register_next_step_handler(message,
                                       change)  # подкачивает функцию change
    elif message.text == '✨ Upgrade':  # если нажимает агрейд, выдает строку апгрейд и номер кошелька
        bot.send_message(message.chat.id, UPGRADE_STRING)
        bot.send_message(message.chat.id,
                         MY_WALLET,
                         reply_markup=KEYBOARD_FOR_ALL)
    elif message.text == '💵 Withdraw':  # если нажимает withdraw, начинается проверка
        user = message.from_user.id
        conn = psycopg2.connect(
            dbname='d6e129ci6qleqc',
            user='******',
            password=
            '******',
            host='ec2-54-152-175-141.compute-1.amazonaws.com',
            port=5432)  # коннект к базе
        curs = conn.cursor()
        curs.execute(
            'SELECT btc_wallet, user_email FROM users WHERE user_tg_id = {}'.
            format(user))
        parametrs = curs.fetchall()  # берет поля кошелек и емейл
        parametrs = parametrs[0]
        if parametrs[
                0] == None:  # если кошелек не установлен, просит ввести кошелек и сохраняет его
            bot.send_message(message.chat.id,
                             'To withdraw give your BTC wallet, please: ',
                             reply_markup=KEYBOARD_CANCEL)
            bot.register_next_step_handler(message, change)
        if (parametrs[1] == None) and (
                parametrs[0] !=
                None):  # если нет почты, просит ее ввести и сохраняет
            bot.send_message(message.chat.id,
                             'To withdraw give your email, please: ',
                             reply_markup=KEYBOARD_CANCEL)
            bot.register_next_step_handler(message, update_email)
        if (parametrs[0] != None) and (parametrs[1] !=
                                       None):  # если есть все нужные поля
            curs.execute(
                'SELECT balance FROM users WHERE user_tg_id = {}'.format(user))
            curs.fetchall()  # смотрит в БД баланс юзера
            user_balance = curs.fetchall()
            try:
                user_balance = user_balance[0][0]
                if user_balance < 0.1000000:  # если баланс юзера меньше 0.1 присылает сообщение для низкого баланса
                    bot.send_message(message.chat.id,
                                     WITHDRAW_STRING_IF_LOW,
                                     reply_markup=KEYBOARD_FOR_ALL)
                elif user_balance >= 0.1000000:  # если баланс больше 0.1, присылает строку с подтверждением акка
                    bot.send_message(message.chat.id,
                                     WITHDRAW_STRING_IF_HIGH,
                                     reply_markup=KEYBOARD_FOR_ALL)
            except:
                bot.send_message(message.chat.id,
                                 WITHDRAW_STRING_IF_LOW,
                                 reply_markup=KEYBOARD_FOR_ALL)
    elif message.text == '📊 Stats':  # при нажатии этой кнопки подтягивает функцию из файла статс
        bot.send_message(message.chat.id,
                         stats.stats_func(),
                         reply_markup=KEYBOARD_FOR_ALL)
    elif message.text == '💲 Proof':  # при нажатии этой кнопки подтягивает функцию из файла пруф
        try:
            bot.send_message(message.chat.id, proof_blockchain.proof_func())
        except IndexError:
            bot.send_message(message.chat.id,
                             'Sorry, Blockchain API is overloaded, try again',
                             reply_markup=KEYBOARD_FOR_ALL)
    elif message.text == '🎁 Bonus':  # при нажатии этой кнопки подтягивает функцию из файла бонус
        bot.send_message(message.chat.id,
                         bonus.bonus_func(),
                         reply_markup=KEYBOARD_FOR_ALL)
        bot.register_next_step_handler(message, give_bonus)
    else:  # если пользователь вводит что-то иное, бот отправляет сообщение
        bot.send_message(message.chat.id, 'Use buttons, please')
Ejemplo n.º 2
0
 def account_func():
     account.account_func(username)
Ejemplo n.º 3
0
def main_func(username):

    i = 3
    client = 0
    start = True

    client_name = []
    client_name.append(username)

    def del_dups(l):
        dup = []
        for i in l:
            if i not in dup:
                dup.append(i)
            else:
                pass
        global client_name
        client_name = dup
        return dup

    def log_out(username):
        to = username + ',gone980'
        c.send(to.encode('ascii'))
        win.destroy()

    def list_insert(msg):
        active_users.delete(0, END)

        global active_list
        active_list = []

        for i in range(0, len(msg)):
            m = msg[i].split(',')
            for j in range(0, len(m)):
                client_name.append(m[j])
                active_users.insert(i + 1, m[j])

    def sendMessage(username, *args):
        u = username.split()[0]
        msg = u + ' : ' + msg_entry.get()
        global c
        c.send(msg.encode('ascii'))

    def recievingMessage(c):
        while True:
            msg = c.recv(2048).decode('ascii')
            if 'new980' in msg:
                msg = msg.split('@')
                msg.pop(-1)
                list_insert(msg)
                for i in msg:
                    client_name.append(i)
                pygame.mixer.music.load('resources\\new_user.mp3')
                pygame.mixer.music.play()

            elif 'gone980' in msg:
                msg = msg.split('@')
                msg.pop(-1)
                list_insert(msg)
                for i in msg:
                    client_name.append(i)
                pygame.mixer.music.load('resources\\log_out.mp3')
                pygame.mixer.music.play()

            else:
                t = text.get(1.0, END)
                text.delete(1.0, END)
                text.insert(INSERT, t + msg + '\n')
                text.yview('end')
                pygame.mixer.music.load('resources\\recv_message.mp3')
                pygame.mixer.music.play()

    #Socket Creation
    def socketCreation(username):
        global c
        c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        host = '127.0.0.1'
        port = 5000
        c.connect((host, port))
        msg = username + ',new980'
        c.send(msg.encode('ascii'))
        global client
        client = c
        _thread.start_new_thread(recievingMessage, (c, ))

    win = Toplevel()
    win.geometry('530x400')
    win.resizable(0, 0)
    win.title(f'Chat\{username}')

    Label(win,
          text='Chat',
          bg='white',
          font=('arial black', 13),
          width=50,
          height=1).pack()

    text = tks.ScrolledText(win,
                            height=17,
                            width=41,
                            font=('arial black', 10),
                            wrap=WORD)
    text.place(x=10, y=40)
    text.yview('end')

    msg_entry = Entry(win, font=('arial black', 13), width=25)
    msg_entry.place(x=10, y=365)

    send = Button(win,
                  font=('arial black', 10),
                  text='Send',
                  bd=0,
                  bg='blue',
                  fg='white',
                  width=10,
                  command=lambda: sendMessage(username))
    send.place(x=300, y=365)

    Label(win,
          font=('arial black', 13),
          bg='blue',
          fg='white',
          text='Users',
          width=12).place(y=40, x=400)

    f = open('resources/log_details.csv', 'r')
    r = DictReader(f)
    l = []
    for row in r:
        l1 = []
        l1.append(row['name'])
        l.append(l1)

    user_list = Listbox(win, height=8, width=20)
    user_list.place(x=400, y=70)
    for i in l:
        user_list.insert(END, i[0])

    Label(win,
          font=('arial black', 13),
          bg='Green',
          fg='white',
          text='Active Users',
          width=10).place(y=200, x=400)

    active_users = Listbox(win, height=8, width=20)
    active_users.place(x=400, y=230)

    Label(win, text='Logged In as : \n' + username,
          font=('arial black', 10)).place(x=400, y=360)

    global set_img
    set_img = PhotoImage(file='resources\\icons8-menu-48.png')
    set_img = set_img.subsample(2)

    menu_b = Button(win, image=set_img, bd=0, bg='white')
    menu_b.image = set_img
    menu_b.place(x=490, y=2)

    def clear_chat_func():
        text.delete(1.0, END)

    pop = Menu(win, tearoff=0)
    pop.add_command(label='Account Settings',
                    command=lambda: account.account_func(username))
    pop.add_separator()
    pop.add_command(label='Clear Chat', command=clear_chat_func)
    pop.add_separator()
    pop.add_command(label='Log Out', command=lambda: log_out(username))

    def do(event):
        try:
            pop.tk_popup(event.x_root, event.y_root, 0)
        finally:
            pop.grab_release

    menu_b.bind('<Button-1>', do)

    def key_press(*args):
        sendMessage(username)

    win.bind('<Return>', key_press)

    _thread.start_new_thread(socketCreation, (username, ))

    win.mainloop()