Вопрос
А что такое Pikabu Publish Bot?
А что такое Pikabu Publish Bot?
В данном уроке мы научимся выгружать свой проект на сервер gethub.com.
Для начала заходим на gethub.com и регистрируемся на сайте. После нажимаем на свою иконку и выбираем your repositories. Пишем название своего проекта и нажимаем на create repository.
Теперь у вас появляется личный аккаунт на gethub.
Чтобы подключить свой проект к gethub нам нужно зайти в pycharm, и сверху tool и выбрать get repository. После вас перекинет на сайт где вы должны войти в свой gethub. Далее у вас появится сверху git. Нажимаем на git и выбираем commit.
Далее в появившимся окне нажимаем на push.
Возвращаемся на сайт gethub и видим наш появившийся файл на сайте.
Теперь наш проект выгружен на сервер и любой человек может зайти и посмотреть его.
На этом наши уроки по созданию telegram бота закончены. Теперь вы умеете создавать telegam бота на двух разных библиотеках и уже можете делать ботов под заказ. Можете подключать систему оплаты и различные кнопки.
Далее на этом канале я буду выкладывать полезные уроки на python, изучив которые вы сможете зарабатывать на python. Будет много полезного и познавательного контента связанного с python, который вам пригодиться в будущем.
В этом уроке мы добавим платежную систему для оформления платежей внутри нашего telegram бота.
Для подключения системы оплаты мы должны перейти в BotFather и прописать команду /mybots. За счет этой команды мы можем выполнить редактирование наших ботов. Выбираем нашего бота. Тут мы можем узнать токен нашего бота, отредактировать его и так далее. Нас же интересует такая кнопка, как Payments, то есть настройка платежей в боте.
Telegram позволяет настроить сразу несколько различных систем оплаты для вашего бота. Также важно, что для настройки какой-либо систем платежей вы должны быть зарегистрированы в самой этой системе. Я буду регистрировать такую систему как ЮKassa. Если мы хотим подключить основную систему оплаты, то заходите на сайт ЮKassa, в организации и вводите свои данные, и буквально через 1 день вам пришлют договор с подписанием контракта с ЮKassa. Мы же пока подключим с вами тестовый магазин в нашем боте. Для этого в BotFather мы выбираем ЮKassa.
Теперь если у вас уже подключена основная система оплаты, то нажимаем на кнопку Connect ЮKassa Live. В моем случае я подключаю тестовый магазин, поэтому нажимаю на кнопку Connect ЮKassa Test. Далее нас перебрасывает в бота юкассы. Нажимаем кнопку start. Далее бот нас просит отправить ему идентификатор нашего магазина. Бот сформирует вам его и останется только переслать это число ему в ответ. Далее он попросит скинуть ваш shopArticleId, который он также сам сгенерирует. После чего ЮKassa зарегистрирует ваш тестовый магазин в BotFather.
Теперь возвращаемся в BotFather, где уже зарегистрирована наша платежная система. Он выводит нам токен, по которому м теперь сможем проводить оплату.
Добавляем наш токен в файл token.csv, где у нас уже храниться token нашего бота. Сохраняем его в переменную, например, PAYMENT_TOKEN.
Теперь мы можем описать код, за счет которого мы будем высылать счет на оплату пользователю и при нажатии на специальную кнопку пользователь сможет перейти на систему оплаты и выполнить платеж через нашего бота.
Давайте теперь напишем код, за счет которого мы будем высылать invoice пользователю. По сути это будет счет для оплаты и при нажатии на специальную кнопку, пользователь будет переходить на систему оплаты и выполнить платеж. Давайте будет отправлять пользователю счет для оплаты, когда нам будет приходить такая команда, как /pay. Так как в прошлом уроке мы работали с библиотекой aiogram, чтобы закрепить то, что мы узнали, продолжим работать на ней.
Мы обращаемся к диспетчеру (то есть объекту dis), затем обращаемся к message_handler() и также указываем commands = ['pay']. Затем мы должны создать функцию, например, payment. В функции мы указываем параметр message и указываем тип этого параметра. Для этого ставим двоеточие, затем указываем types и тип этого параметра, то есть message. Теперь давайте отправим счет нашему пользователю. Для этого прописываем await bot.send_invoise. Данная функция принимает много параметров, давайте разберемся в них.
Первым параметром передаем message.chat.id.
Title, где указываем название нашего товара.
Description - в нем мы пишем описание к нашему товару.(является не обязательным в передаче)
Provider_token, тут же мы обращаемся к нашему csv файлу и берем из него PAYMENT_TOKEN.
Currency необходимо передать трехзначный код валюты в формате ISO 4217. Полный список валют можно найти здесь.
Photo_url мы должны передать ссылку на наше фото(является не обязательным в передаче)
Если вы добавили фото, то нужно указать параметры photo_height и photo_width, иначе изображение либо вообще не отобразится, либо отобразится некорректно.
Is_flexible отвечает за то, что финальная цена зависит от способа доставки (когда передаем True). При значении False этот параметр можно не писать.
Prices принимает массив из цен, поэтому передаем туда [price]. Переменную price мы напишем чуть позже.
Start_parameter является обязательным, документация утверждает, что можно использовать уникальный диплинкинг параметр, чтобы создать эту квитанцию.
Payload. Объем 1-128 байт. Рекомендуется использовать его для того чтобы идентифицировать инвойсы - он не показывается пользователю, но мы можем его прочитать при получении успешной оплаты.
Сейчас при запуске у нас будет выдаваться ошибка, так как у нас неизвестная переменная price. Давайте создадим ее. Для этого перед диспетчером мы пишем переменную price, куда должны указать цену товара. Мы обращаемся к types, к LabeledPrice(). Далее в label мы указываем название товара, а в amount передаем стоимость.
ВАЖНО! Нужно передавать целочисленное значение в минимально возможных единицах валюты. То есть если мы говорим о рублях, то передавать нужно копейки (123руб. как 123* 100).
Теперь при запуске бота и отправке команды /pay, нашему пользователю будет отправляться счет на оплату.
Теперь давайте будет отправлять сообщение пользователю после того, как он оплатит покупку. Для этого обращаемся к диспетчеру, далее обращаемся к message_handler. Указываем content_types и в качестве значение передаем types.ContentType.SUCCESSFUL_PAYMENT. Это означает, что наш метод будет срабатывать только в случае, если будет выполняться успешная оплата.
Далее в нем мы создаем асинхронную функцию и в ней отправляем некое сообщение пользователю.


Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.
В этом уроке мы добавим полноценное веб-приложение в нашего Telegram бота.
Давайте сначала отслеживать команду /start. Именно при команде /start мы будем показывать пользователю кнопку, по нажатию на которую откроется веб-приложение. Чтобы отследить команду /start, мы используем функцию message_handler и указываем, что обрабатываем команду /start. Затем мы создаем асинхронную функцию, например, start, и здесь принимаем один параметр message с типом message. Далее создаем кнопку, создавая объект markup, затем обращаясь к types и вызывая ReplyKeyboardMarkup(). Затем добавляем нашу кнопку с помощью markup.add и types.KeyboardButton. Пишем текст нашей кнопки, например, 'Веб-приложение'. Здесь мы также указываем параметр web_app, передавая ему WebAppInfo в качестве значения. Для подключения этого нам нужно обратиться к библиотеке aiogram.types.web_app_info и импортировать из нее WebAppInfo. В WebAppInfo нужно указать адрес сайта, который откроется при нажатии на кнопку. Мы создадим наш сайт позже, а пока укажем ссылку на канал Дзен.


При нажатии на кнопку открывается мини-веб-приложение, на котором можно нажимать кнопки. Если на сайте есть система оплаты, мы также можем здесь произвести оплату.
Теперь создадим свою собственную веб-страницу, которая откроется при нажатии на кнопку. Для этого внутри проекта нужно создать HTML-файл, который мы попробуем отобразить в веб-приложении в Telegram боте. Внутри HTML-файла прописываем стандартную HTML-разметку и основное содержимое нашей страницы(данную разметку можно найти в моем Telegram канале: https://t.me/CodeCashh).
Затем, чтобы наша страница отображалась в веб-приложении, нам нужно выгрузить эту страницу на локальный сервер. Если у вас уже есть свой веб-сайт, вы можете добавить файл в папку вашего сайта и просто указать ссылку на этот файл. Если же у вас, как в моем случае, нет своего веб-сайта, мы воспользуемся GitHub. Регистрируемся на сайте, затем нажимаем на свою иконку и выбираем "Your repositories".
Вводим название нашего сайта, затем через точку указываем "github.io". Ставим галочку на "Add a README file" и создаем проект.
После создания нажимаем "Add file" -> "Upload files" и добавляем наш HTML-файл. Затем он появляется в нашем проекте.
Далее заходим в папку "README.md", нажимаем "Edit this file" и добавляем наш HTML-код.
Сохраняем файл. Затем переходим в настройки и нажимаем "Pages". В пункте "Branch" указываем направление, где лежат наши файлы, и нажимаем "Save".
Теперь GitHub отправит ссылку на наш сайт, по которой откроется наша веб-страница.
Копируем ссылку на наш сайт и вставляем ее в Python-файл. Затем запускаем наш проект и заходим в Telegram бота. При нажатии на кнопку откроется наша веб-страница.
Стиль веб-приложения я сделаю в telegram канале.
Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.
В этом уроке мы изучим базовые аспекты работы с библиотекой aiogram.
У вас, наверное, возник вопрос, зачем нам изучать библиотеку aiogram, если мы уже можем создавать ботов с помощью telebot. Дело в том, что умение работать сразу с несколькими библиотеками позволит вам лучше понять построение ботов, а также в случае заказа telegram ботов, некоторые заказчики могут попросить написать бота определенной библиотеке. При изучении еще одной библиотеки вы убедитесь, насколько они схожи, и что изучение новой библиотеки не займет у вас много времени.
Для работы с библиотекой aiogram ее необходимо сначала установить. Для этого совершите следующие действия: File -> Settings -> Project: (ваш проект) -> Python Interpreter -> над словом "package" нажмите на + -> в поиске введите название библиотеки aiogram -> Install Package.
Теперь, когда библиотека установлена, мы можем ее подключить. Вместо полного подключения библиотеки, я предлагаю подключить только определенные классы, которые нам понадобятся. Для этого мы импортируем из библиотеки aiogram такие классы, как Bot, Dispatcher, executor и types. Затем нам нужно создать объект bot, который будет ссылаться на наш токен в telegram. Для этого мы создаем бота и обращаемся к Bot, а в качестве значения указываем наш токен. Также, чтобы бот корректно работал, нам нужно воспользоваться классом Dispatcher. Создаем объект, например, dis, где обращаемся к Dispatcher, и устанавливаем нашу переменную bot. Теперь мы можем работать с нашим ботом. Также давайте в самом низу пропишем то, что наша команда будет работать постоянно. Для этого нам необходимо обратиться к executor и вызвать start_polling, куда передаем наш объект dis. Это будет базовым синтаксисом для настройки бота.
Давайте для начала отследим команду /start. Для этого мы прописываем почти один и тот же синтаксис. Мы обращаемся к диспетчеру (то есть объекту dis), затем обращаемся к message_handler() и также указываем commands = ['start']. Затем мы должны создать функцию, например, start, и здесь будет использоваться принцип асинхронности, поэтому перед функцией мы должны прописать ключевое слово async. Также перед всеми действиями, которые вы будете выполнять, нужно прописывать await. В функции мы указываем точно такой же параметр message и указываем тип этого параметра. Для этого ставим двоеточие, затем указываем types и тип этого параметра, то есть message. Теперь давайте выведем сообщение пользователю. Сначала мы прописываем await, затем обращаемся к bot.send_message(), указываем message.chat.id, а затем в фигурных скобках пишем наше сообщение пользователю.
Если запустить бота и нажать кнопку /start, то все будет работать корректно.
Типы получаемых данных.
Также, как и ранее, если мы внутри диспетчера напишем не commands = ['start'], а, например, content_types = ['photo'], то наш бот будет отвечать только тогда, когда ему будут отправлять фотографию.


То же самое будет происходить, если мы в content_types пропишем video - наш бот будет отслеживать видео, если audio - аудио, если text - текст.
Чтобы отправить нашему пользователю какой-либо файл в ответ на его сообщение, мы сначала открываем файл с помощью функции open, затем асинхронно прописываем message.answer_ и выбираем тип файла, который мы хотим отправить пользователю.


Можно заметить, что библиотеки для создания ботов очень схожи.
Теперь давайте создадим функцию, которая будет отслеживать наши кнопки. Для этого обращаемся к диспетчеру, далее обращаемся к message_handler() и здесь прописываем commands = ['text']. То есть, когда мы напишем текст, то наши кнопки будут срабатывать. Далее прописываем async, потом прописываем функцию, например, second, и тут мы указываем также параметр message и его тип types. Для создания кнопок мы будем делать почти все то же самое. Мы прописываем markup, далее обращаемся к types, и если мы делаем встроенные кнопки, то обращаемся к InlineKeyboardMarkup(). Далее для добавления кнопок я пишу markup.add и внутри обращаемся к types.InlineKeyboardButton. Здесь мы указываем текст, который будет на наших кнопках. Например, создадим кнопку на нашу группу в Telegram. Напишу текст 'Telegram канал', тут же пропишем url и пишем ссылку на нашу группу. По схожему принципу добавим еще одну кнопку 'Привет', только вместо url мы добавим callbackdata. Также вместе с этими кнопками давайте будем выводить текст, например, 'Привет!'. Для этого мы пишем await, потом bot.send_message(message.chat.id, 'Привет!') и дополнительно описываем replymarkup = markup, чтобы наши кнопки работали.


Теперь давайте создадим обработчик callback_data. Для этого обращаемся к диспетчеру, далее к callback_query_handler(). Здесь же мы с вами создаем асинхронную функцию, например, callback, которая принимает параметр call. И здесь мы будем выводить сообщение на экран. Для этого мы пишем await, обращаемся к call.message.answer и будем выводить те данные, которые передаются при нажатии (в моем случае это будет help).


Теперь давайте создадим кнопки reply. Для этого также обращаемся к регистру, к message_handler() и пусть наши кнопки будут появляться при команде /reply. Для этого пишем внутри commands = 'reply'. Теперь создаем функцию, например, reply. Тут также мы принимаем один параметр и указываем его тип. Далее мы прописываем почти то же самое, что писали ранее. Создаем объект markup, далее обращаемся к types, потом ReplyKeyboardMarkup. Далее мы добавляем кнопки с помощью markup.add. Тут же мы указываем types.KeyboardButton и далее указываем название кнопки, например, help. Потом мы выводим некое сообщение с помощью await bot.send_message(message.chat.id, 'Приветствуем вас в нашем Telegram боте') и также указываем reply_markup=markup.


Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.
В этом уроке мы закончим создавать telegram бота, который будет конвертировать валюты.
В прошлом уроке мы остановились на том, что создали кнопки для конвертации и проверяли ввод на правильность. Сегодня же мы с вами сделаем, чтобы наши кнопки функционировали и закончим создание бота.
Давайте создадим метод, который будет обрабатывать наши кнопки. Для этого мы прописываем декоратор @bot.callback_query_handler(), здесь мы прописываем параметр, который принимаем лямбда функцию. Функция будет принимать тоже один параметр call и будет возвращать значение True.
Далее мы прописываем функцию, например, callback. Тут мы принимаем один параметр call. Внутри же функции мы должны понять какую пару выбрал пользователь. Сначала мы будем обрабатывать только те кнопки, где уже есть значение валют(то есть все кнопки, кроме 'Другое значение'). Для этого создадим некую переменную, например, value, далее мы обращаемся с call.data, где и будет записан наш текст, который мы передаем. Этот текст нам необходимо перевести к верхнему регистру (upper), так как метод CurrencyConverter() принимает пары значений в верхнем регистре. После этого мы обращаемся к функции split(), которая позволяет нам разделить строку по определенному символу. Мы же будем делить по символу '/'.
Таким образом в value будет записан список из двух значений(это валюта, которую мы конвертируем и валюта, в которую мы конвертируем) и причем они будут приведены к верхнему регистру. Теперь создадим переменную, например, r. В ней мы обращаемся к cur(это объект на основе CurrencyConverter) и через этот объект обращаемся к функции convert(эта функция позволяет выполнить нам конвертацию). Тут мы указываем количество, то есть обращаемся к нашей глобальной переменной money. Далее нам необходимо указать валюту. Для этого нам необходимо обратиться к списку value и подставить первый элемент и второй. Таким образом функция convert будет принимать некое число и также будет принимать нашу пару валют.
Теперь нам остается вывести все на экран. Для этого мы обращаемся с bot.send_message(), потом к call. Далее мы обращаемся к message, к chat и к id, далее мы указываем отформатированную строку. Тут я напишу 'Получается:', далее мы будем выводить наше конвертированное число и также здесь мы будем писать, что человек заново может вписать сумму. Это получается, что после конвертации данных, мы опять позволим пользователю ввести некую сумму. Давайте зарегистрируем функцию, которая будет обрабатывать эту сумму(в моем случае это функция summ). В эту функцию мы просто передаем message(поскольку это callback, то еще нам нужно обратиться к call).
На данном этапе у нас обрабатываются все кнопки, кроме кнопки 'Другое значение'. Для того чтобы эта кнопка обрабатывалась, мы обратимся к функции callback. И в ней мы будем проверять какой текст передается. В случае если текст наших данных значений не равен 'else', то тогда мы выполняем весь тот код, который у нас уже написан, иначе мы выполнять немного другой код. Здесь давайте мы будем отправлять пользователю сообщение(так же как и ранее bot.send_message(call.message.chat.id, "Введите пару значение через '/'")) и также мы должны зарегистрировать следующее действие, которая будет назваться, например, mycur. Теперь же мы создаем нашу функцию mycur. Тут мы принимаем параметр message. Тут мы по сути будем делать то же самое, что делали ранее. Мы также будем получать от пользователя данные, только уже через message text. Потом будем приводить их в верхний регистр, и будем разбивать по символу '/'. А далее мы должны сделать все то же самое, что делали ранее, только без значения call.
Но представим, если наш пользователь отправит нам некорректное значение, например, укажет валюты не через '/', а через пробел. Тогда же наш бот перестанет функционировать и сломается. Для исправления ошибки также добавим обработчик исключений. Мы с вами будем выполнить наш код, но в случае возникновения ошибки, мы будем отправлять пользователю сообщение, например, 'Что-то введено не корректно. Попробуйте ввести заново:'. И далее мы также регистрируем ту функцию, с которой мы работали для ввода купюр(в моем случае это функция mycur).
Давайте теперь проверим нашего бота.
Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.
В этом уроке мы начнем создавать telegram бота, который будет конвертировать валюты.
Для конвертации валют мы будем использовать такую библиотеку, как currency converter. Для этого нам нужно ее установить в python.
После установки мы модем подключить нашу библиотеку к программе(from currency_converter import CurrencyConverter). И далее нам необходимо создать объект, класса CurrencyConverter().
Для конвертации мы будем использовать такой метод, как convert. В него мы будем передавать сумму, а также пару валют, среди которых мы будем выполнять конвертацию.
В первую очередь в любом боте мы должна обрабатывать команду /start. Тут же мы напишем стандартную для нас функцию, где мы будем выводить сообщение о том, чтобы он ввел сумму для конвертации, а далее будет говорить среди каких валют пользователь хочет совершить конвертацию. Для этого мы зарегистрируем некое следующее действие, где указываем параметр message, а также укажем нашу следующую функцию, например, summ. И по сути эта функция будет срабатывать как только пользователь введет некую сумму.
В нашей функции давайте получать от пользователя данные и будем помещать их в переменную, например, money. Для этого пропишем message.text.strip(). И еще так как эта переменная будет использоваться в других функциях, то давайте делаем ее глобальной. Для этого в начале программы напишем, что money = 0, а внутри нашей функции будет обращаться к глобальной переменной money.
Теперь давайте установим набор различных кнопок, при нажатии на которые пользователь сможет выбрать пару для конвертации. Также для удобства импортируем из библиотеки telebot такую вещь, как types. Прописываем создаем markup, где обращаемся к types, потом к InlineKeyboardMarkup(). Также можно делать встроенные кнопки в сам telegram, но я решил, что данные кнопки будут удобнее. Также я хочу указать что в одном ряду будет максимум 2 кнопки. Для этого в InlineKeyboardMarkup() мы указываем row_width=2 (это означает, что в одном ряду будет не более двух кнопок). Теперь создаем сами по себе кнопки. Для этого используем InlineKeyboardButton. И тут мы указываем текст пары купюр для конвертации, а также указываем callback_data, по которой потом мы будем переводить купюры. В точно таком же формате создаем и другие кнопки. А также создадим кнопку 'Другое значение', при нажатии на которую пользователь будет сам указывать какие купюры он хочет перевести. И в конце мы указываем markup.add, где указываем все значения наших кнопок. И еще будем писать текст пользователю 'Выберите пару валют:', а также в конце прописываем reply_markup=markup.
Теперь давайте на данном этапе запустим бота и посмотрим как он будет работать.
Но на данном этапе, если мы введем, например, не число, а текст, то у нас также будет выдаваться конвертация, чего быть не должно. Давайте это исправим.
Сначала нам необходимо указать то, что данные, которые мы будем получать от пользователя они должны быть числом. Для этого в переменной money напишем то, что она будет у нас int переменной.
Если же сейчас мы запустим бота и будем вводить некую строку, то наш бот будет выдавать ошибку, так как мы пытаемся перевести некую строку в число. Поэтому давайте пропишем обработчик исключения.(try: .......... except: ..........). Наше исключения будет заключаться в том, что мы с вами будем пробовать привести money в число. Если же мы с вами будем получать ошибку, как ValueError(это ошибка, когда пользователь вводит не тот тип данных), то мы пользователю будем отправлять сообщение 'Формат не верный. Впишите сумму:'. Кроме этого нам надо зарегистрировать следующее действие, которая будет эта же функция. Ну и в конце мы должны прописать return, чтобы последующий код не выполнялся.
Теперь давайте исправим ошибку с тем, что если пользователь введет отрицательное число, то нам также выдавало ошибку. Для этого мы просто укажем перед нашими кнопками, если число больше 0, то мы едем по кнопкам, иначе мы будем выводить то же самое, что выводили ранее для ошибки, только будем писать пользователю другой текст.
Теперь давайте запустим бота и посмотрим что получилось.
На этом мы пока остановимся и продолжим на следующем уроке.
Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.
В данном уроке мы научимся добавлять данные пользователя в базу данных и выводить список всех пользователей.
В прошлом уроке мы закончили на том, что пользователь вводил нам своё имя и счет, после чего наш бот писал, что пользователь успешно зарегистрирован.
Теперь нам необходимо сохранить пользователя в базе данных, для дальнейшей работы с ним. В качестве данных для регистрации мы будем использовать имя и счет, который мы получили от самого пользователя. Чтобы сохранить пользователя в базе данных нам необходимо подключиться к самой базе данных. Мы также прописываем connect, указываем к какому файлу мы подключаемся, создаем cursor и далее мы будем выполнять некую команду, потом синхронизацию и также будем закрывать базу данных. Только в execute мы должны прописать немного другое. Наша команда будет звучать следующим образом: Мы говорим, что будем добавлять некую новую запись в такую таблицу, как users. В качестве полей, которых мы будем туда добавлять это поле name и VALUE. Значение для поля id нам передавать не надо, так как оно у нас auto_increment и будет автоматически подставляться. Мы передаем только те поля, которые автоматически не подставляются. В таблицу users мы будем подставлять наше значения из переменных как name и value. Также это должна быть отформатированная строка и мы будем подставлять наши данные в некую строку.
Сейчас наша проблема будет заключаться в том, что переменной name нет в нашей функции и мы по сути не можем ее подставить. Чтобы исправить нашу ошибку, мы должны создать в самом начале переменную name, укажем ее значение, как пустая строка. И теперь функции user_name мы укажем, что будем работать с глобальной переменной name и уже в нее мы будем устанавливать значение.
Теперь мы можем спокойно обращаться к нашей переменной name и у нас не будет ошибки. Сейчас у нас корректно будет добавляться новый пользователь в базу данных.
С базой данных у нас все готово. Теперь каждый новый пользователь будет добавляться в нашу базу данных.
Давайте добавим кнопку, после нажатия на которую у нас буду отображаться все зарегистрированные пользователи.
На кнопке я не буду уделять большого внимания, так как их мы детально разбирали в четвертом уроке.
Пока наша кнопка работать не будет, так как мы не написали, что должно выполняться при нажатии на эту кнопку. Давайте это исправим. Сначала мы создадим функцию, например, new с параметром message и будем проверять, если нам выдается текст 'Список пользователей', то мы вами подключаемся к базе данных и выдаем таблицу пользователей. Для этого мы также прописываем то, что писали ранее для подключения к базе данных. Потом в execute мы должны сказать другое. Мы передаем, что выбираем все поля из такой таблицы, как users.Далее команду commit нам прописывать не надо, так как эта команда срабатывает, чтобы установить, обновить или удалить что-либо. Здесь же мы получаем данные, поэтому вместо commit будем использовать fetchall. Эта функция возвращает полностью все найденные записи. Эти же все найденные записи мы установим в некую переменную, например, users.Далее мы должны перебрать все полученные данные и вывести их на экран. Для этого нам надо создать новую переменную, которая изначально будет пустой. Далее мы создаем цикл, в котором будем перебирать наш список users(то есть перебираем все наши записи). И здесь в цикле к нашей пустой переменной мы будем добавлять новую строку, в которой мы будем выводить данные пользователя. Для начала выведем имя.
Для этого мы должны обратиться к текущему элементу с которым работаем(в моем случае это i) и в этом списке у меня находиться 3 элемента:
Id текущей записи
Имя пользователя
Счет пользователя
Мы обращаемся ко второму элементу, а по индексу он первые(так как индекс начинается с 0). Таким образом мы выводим имя пользователя. Чтобы вывести соответственно счет, мы должны обратиться уже к третьему элементу, или же ко второму индексу.
Также чтобы каждые пользователь появлялся в новой строке мы должны в конце прописать \n. И потом также в конце мы с вами закрываем курсор и коннект к нашей базе данных.
Таким образом мы сформируем некую строку, которую будем выводить нашим пользователям. Для этого мы пропишем bot.send_message(message.chat_id, info). Вот таким образом у нас будет все выглядеть.
Теперь давайте запустим бота и посмотрим, как он работает.
Теперь каждый новые пользователи будут видеть, зарегистрированных людей в боте.
Также если вы не хотите долго ждать, то все уроки и коды с уроков уже есть в моем telegram канале.
Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.