Как создать бота в Telegram Часть 2 [Python]

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Таксс, ну кто не читал 1 часть, то прочтите, в этой статье мы будем продолжать разработку этого бота)
Ссылка на статью:
https://dark2web.info/threads/112707/#post-952268
https://dark2web.info/threads/112707/#post-952268

В этой части мы подключим БД(Базу Данных)

Ну что же, начнем!

Первым делом мы импортируем еще одну библиотеку в наш код, чтобы работать с базой данных

Python:
import sqlite3

Окей, теперь мы должны скачать любой менеджер Sqlite3, лично я юзаю DB Browser for SQLite
Я тут небольшую GIF сделал, чтобы меньше вопросов было, да и нагляднее
И чтобы было удобнее добавляем нашу БД в папку с нашим проектом


СМОТРЕТЬ GIF

Кст, хз че она такая медленная, ну да ладно

Теперь сделаем так, чтобы наша программа проверяла при команде '/start', есть ли в нашей БД этот человек, в противном случае добавляла бы его ID
Я наверное все подробно и что означает не буду расписывать, если надо будет, то глянете пару гайдов, там все достаточно понятно расписано

Ща возможно немного код понять, для этого я написал небольшие комментарии
Python:
conn = sqlite3.connect("test.db")  # подключаемся к нашей БД/ в ковычках должен быть путь к файлу
    cursor = conn.cursor()  # Создаем курсор, чтобы управлять БД
    cursor.execute('SELECT ID FROM USERS WHERE id = :id',
                   {'id': message.chat.id})  # Находим пользователя
    reg_id = cursor.fetchone()
    conn.commit()
    conn.close()
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    itembtn1 = types.KeyboardButton('Хочу стих')
    markup.add(itembtn1)
    if reg_id != None:# Если значение не является пустым, то мы понимаем, что этот пользователь уже у нас есть
    ########
    ########
        bot.send_message(message.chat.id, 'И снова здравствй!')
        bot.send_message(message.chat.id, "Что ты хочешь?", reply_markup=markup)
    ########
    else:# Иначе мы добавляем его к нам в БД
        conn = sqlite3.connect("test.db")  # подключаемся к нашей БД/ в ковычках должен быть путь к файлу
        cursor = conn.cursor()  # Создаем курсор, чтобы управлять БД
        cursor.execute(("""REPLACE INTO USERS (ID)
                       VALUES ('%s');
                       """) % (message.chat.id))
        conn.commit()
        conn.close()
        bot.send_message(message.chat.id, 'Привет, я твой бот!')
        bot.send_message(message.chat.id, "Что ты хочешь?", reply_markup=markup)
        print('Новый подписчик')

Чутка подправим клавиатуру и добавим кнопку "Статистика"
Python:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
itembtn1 = types.KeyboardButton('Хочу стих')
itembtn2 = types.KeyboardButton('Статистика')
markup.add(itembtn1, itembtn2)

Сделаем так, чтобы Бот реагировал на эту кнопку
Python:
elif message.text == 'Статистика':
     conn = sqlite3.connect("test.db")  # подключаемся к нашей БД/ в ковычках должен быть путь к файлу
     cursor = conn.cursor()  # Создаем курсор, чтобы управлять БД
     cursor.execute('SELECT * FROM USERS')  # Выбираем всех пользователей
     list_of_user = cursor.fetchall() # Создаем список пользователей

     conn.commit()
     conn.close()
     bot.send_message(message.chat.id, f'Сейчас в этом  чудесном боте:\n? |{len(list_of_user)}| пользователей ')

Так, ну и давайте протестируем)



СМОТРЕТЬ GIF

Так и есть, в нашей БД, как раз таки записано 3 ID
Снимок экрана 2020-01-30 в 17.00.20.png

Готовый код - https://pastebin.com/vZzE497x
Спасибо, что дочитали до конца
В следующей статье мы подключим онлайн оплату через QIWI с автоматическим зачислением


ps Вы можете заказать у меня бота, для своих нужд
 
Последнее редактирование:

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Так, две мин пожалуйста , сейчас gif подправлю)
 

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Как смог подправил
 

Dortanis

Участник
Статус
offline
Регистрация
25.06.2019
Сообщения
52
Репутация
26
У меня не там и не тут гиф не ворк
 

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38

evgentor

Новичок
Статус
offline
Регистрация
13.01.2020
Сообщения
0
Репутация
0
Годно, чувак, продолжай в том же духе!
 

Serb

Резидент
Статус
offline
Регистрация
14.11.2019
Сообщения
126
Репутация
107
очень интересная тема ! Жду новых уроков ! Удачи тебе бро