Чтобы не плодить лишний раз глобальные переменные, можно передавать третьим аргументом имя пользователя bot.register_next_step_handler(message, fill_user_pass, name) в этом случае функция fill_user_pass будет принимать не один аргумент - message, а два, например, user_name. def fill_user_pass(message, user_name): Так можно увеличивать их количество от функции к функции, но лучше эти объекты организовывать в список или словарь
Нельзя использовать глобальные переменные в проектах в которых есть несколько пользователей. Потому что если будет параллельно выполняться несколько запросов, нужные данные просто попадут в другой id !
Это лучший ютубер которого я видел ты очень круто объясняешь темы очень крутой курс смотрю каждое видео и повторяю ща тобой пытаюсь разобраться в каждой строчке очень долго искал такого и не мог найти но ты делаешь невероятное) спасибо большое,удачи в развитии канала
Я думаю переменную name лучше делать не глобальной, а передавать из функции user_name в user_pass напрямую. Можно третьим аргументом в метод bot.register_next_step_handler(message, user_pass, name) добавить. Там бесконечное количество переменных можно передавать таким образом.
Чтобы избежать ошибки sqlite3.OperationalError: no such column: нужно было просто добавить кавычки f'INSERT INTO users (name, pass) VALUES ("{user_name}", "{password}")'
@@AlexGold пожалуйста! Судя по описанию ошибки, у тебя идёт попытка вставить одно значение в 2 колонки, то есть забыл где-то второе значение указать. Количество значений должно соответствовать количеству столбцов
ошибка на 15:25 была связана с синтаксисом SQL, можно было просто обрамить в двойные кавычки вот так (я так и исправил и сработало, а уже потом увидел ваше решение): cur.execute(f'INSERT INTO users (name, pass) VALUES ("{name}", "{password}")')
Сперва начал проходить курс питону у одного блогера, не понравилось перешёл к Гоше и тут всё прекрасно. Начал проходить тут связанный с ботами и понял, что пора искать другой канал. Ощущение, что ты просто постарался сделать максимально ёмко эту работу. Просто напихал всего без особых объяснений. Курс по Питону был прекрасен, а здесь наскоряк что то слепленное. И пожалуйста, если ты пишешь код ,а он не работает - не показывай его. Ты просто издеваешься над нами. Мы переписываем, пытаемся разобраться как работает. Ты запускаешь и....оно просто не работает. Так вырежи это, зачем тратить время и силы Спасибо за курс по питону, но этот курс, я пожалуй, пройду в другом месте
Если у вас на моменте 7:42 выдало ошибку: cur.execute(f'CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)') sqlite3.OperationalError: incomplete input Решение: Надо просто использовать другой способ форматирования строки, например, конкатенацию строк: query = 'CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))' cur.execute(query) Ответ мне помогла найти GPT, поэтому я сам не до конца догнал почему это так работает, а как Гоша написал не работает... GPT внятно не ответила... ГОША ПОМОГИ ПОЖАЛУЙСТА ПОНЯТЬ почему так?
Я сейчас скажу возможно не самое популярное мнение, но все таки - sqlite3 не сработает по модели mysql, там есть свои моменты, например: id auto_increment p...k, - не будет вводить значения в таблицу, при выборке мы получим значение None, избежать этого можно так - id primary key, name varchar(50), ... либо так - id primary key autoincrement, name varchar(50), ... во втором случае знак "земля" в слове autoincrement не нужен, иначе будет ошибка синтаксиса.
@@evgeniyo2560 4 часа изнасилования мозга и я пришел в комменты поделиться мудростью, чтобы обнаружить, что кто-то уже ответил Знаете, что находит гугл по запросу sqlite primary key Null? Нифига он не находит
как сделать так, что б в кавычках тоже была подсветка синтаксиса, как на видео? У меня вся строка - 'CREATE TABLE IF...' зеленого цвета, ошибки не подсвечиваются(((
У меня почему то не раскрашивается работа с sqlite3.Как исправить? CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)) Вот это почему то пишется полностью зеленым а не так как на видео.
Был интересен вот этот вопрос: coursor.execute("INSERT INTO users (name, pass) VALUES (?, ?)", (name, password)) почему здесь нельзя использовать форматированную строку по типпу f'{name, pass}' Вот что мне подсказали Эту штуку нельзя сделать т.к. пользователь мог бы ввести вот такую команду и дропнусть все базу SQL т.к. была бы воспринята как команда Это называется SQL инъекция вот ее пример: name = "John'; DROP TABLE users; --" sql = f"INSERT INTO users (name, pass) VALUES ('{name}', '{password}')" Да и как заметили вместо симоволов %s оказалось можно использовать ( ?, ?) что чуть чуть удобнее
Тебе нужно просто создать таблицу с атрибутами id, user_name, user_id.... (И какие хочешь данные) и просто делаешь запросы на пример по user_id(т.к он уникален у каждого пользователя телеги) и с него берёшь всё данные которые тебе нужны
ребят мой вам совет. зачастую все ваши проблемы в коде это из-за не внимательности. В 7:30 комманда cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)') мне выдавало ошибку по типу: sqlite3.OperationalError: и тд так вот. у меня ошибка была в том что я просто забыл закрыть скобки в конце... Для вас задание где я ошибся в коде...
А вот кстати вопрос. В каждом хэндлере вы заново подключаетесь к бд и дропаете подключение, это по идее сильно влияет на производительность? А если есть желание разделить проект на модули?
Ребята, подскажите, почему callback_data у меня вообще не работает? всё сделал как в видео, но почему-то вообще не работает(кнопка показывается, но ничего не вызывается)
у меня была такая же проблема, я нашел 2 причины: 1) почему-то вариант написания как у автора у меня не работал видимо я что-то не так делал, пришлось использовать по совету комментаторов : cur.execute(f"INSERT INTO users (name, pass) VALUES ('{name}', '{password}')") 2) я не создавал проект с 0, а использовал файл бота с прошлого урока, причем сильно его сам переработал, дак вот там у меня была другая функция callback, после комментирования которой случилось чудо и все заработало. ЗЫ. я понимаю, что для вас прошел уже почти год, и может вы разобрались почему конфликтуют функции callback, если так, то поясните, гугление особых результатов не дало, а с учетом того, что эти функции у меня носят разные названия я не особо понимаю принцип их вызова, ведь в строке: markup.add(types.InlineKeyboardButton('Список пользователей', callback_data='users')) мы ссылаемся на переменную users и не понятно как интерпретатор понимает к какому callback обращаться. Заранее спасибо!
В 35 линии неправильно написано вообще все, выдает сранную ошибку, вот исправленный вариант cur.execute('INSERT INTO users(name, password) VALUES (?, ?)', (name, password))
Не помогает. Выдало вот что: cur.execute('INSERT INTO users(name, password) VALUES (?,?)', (name, password)) sqlite3.OperationalError: no such table: users
почему при создании таблицы, в cure.execute весь текст внутри зеленый, int не воспринимает, как исправить, и почему нельзя сразу в видео показать, что нужно доп установить для работы в пайчарм
cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)') sqlite3.OperationalError: incomplete input помогите пожалуйста, что не так?
Вот что мне ответил чат GPT: The code snippet is missing a closing parenthesis ')' for the CREATE TABLE statement. The correct code should be: cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))') Note the closing parenthesis at the end of the statement. У нас с тобой не хватает еще одной скобки перед закрывающим апострофом '
Почему то не работает. Строка, там где cur.execute('CREATE TABLE IF NOT EXISTS users (id int )'), она не становится желтой и не работает, она просто тупо зеленая
у многих не поменялся цвет при создании таблицы и у меня в том числе, для тех кто не знает как решить эту проблему, на сколько я понял нужна платная версия пайчарма, у кого другая инфа, буду рад если поделитесь
Скорее всего у него пользовательская тема, которая перекрашивает текст в разные цвета даже не смотря на кавычки, если это SQLite3 команда. У меня тоже так, так как я не устанавливал темы
Доброго вечера, а можно урок как в телеграм боте отправлять новости. ? К примеру создать простого бота который будет отправлять на Гугл диск для прайсов на товар. А если мы обновили прайсы то мы это как новость написала в боте, и всем кто использует бот в чат пришло уведомления
В теле функции user_name внутри должно быть bot.register_next_step_handler(message, user_pass) У меня сначала было написано bot.register_next_step_handler(message, user_name) и выводило бесконечно "введите пароль", пока не заметил
Друг мой,привет.Полезнве знания,я начинаю свой путь с твоих уроков. Скажи пожалуйста,таблица со списком пользователей доступна только разработчику? А то будет не очень,если у пользователя будут выводиться ники и пароли других юзеров)
Ребята, а подскажите как сделать, чтоб вот эта получившаяся база отправлялась мне в личку, а не отображалась в диалоге пользователя и бота? Можно допустим оставить кнопку скажем (отправить) и при нажатии база уходила бы сообщением на мой акк в телеге. И еще прикольно было бы, чтоб в базу записывалась дата и время. Но это я думаю сам сделаю )))
А нельзя было создать подключение к БД в шапке файла перед декораторами самого бота? Тогда в функциях не надо было переписывать кучу одинакового кода. Тогда with conn: cur.execute('SELECT.......') всего надо прописать ну и вернуть cur.execute('SELECT.......') естественно?
Помогите ! После того как 1-ый пользователь был создан и добавлен в базу данных - если перезагружаю телеграмм бота, то он уже не предлагает регистрировать пользователя, а просто показывает список с 1-ым пользователем. Только после удаления базы данных, можно повторить процедуру. В чём может быть проблема?
А это не проблема. Файл БД хранит данные независимо от перезагрузки бота. Надо тогда удалять юзера, напр. прописать в коде что при остановке бота БД очищается.
Я уже в агонии пишу этот под каждым видео в надежде на помощь. Мой бот работает с геолокацией получаемой через location но у меня есть необходимость разграничить координаты полученные через геолокацию телефона и координаты полученные через кнопку телеграм "выбрать вручную", которая появляется если отключена геолокация на телефоне
У меня вопрос 8:24 почему когда вы снова ввели /start то сообщение не появилось, оно же вроде не должно обрабатывать в 1 раз вы вели старт или во 2 раз
Здравствуйте, подскажите пожалуйста. Я новичок, хочу написать программу небольшую и у меня возник вопрос. например 1: как тебя зовут? 2: Иван(а) 1: сколько тебе лет? 2; 12 лет(б). 1; Меня зовут (а) и мне (б). как это сделать? в питоне? чтобы быть в последнем сообщении отсылку делать на сообщения. могу код прислать,если надо. подскажите пожалуйста
Гоша, почему у меня это поле с Execute просто зеленое внутри скобок, как обычный текст? А у тебя выделено как команды. При том, что всё равно работает. Что это?
Чувак, конструктивчик: 1. Организуй список или словарь. 2. Я понимаю, что питон - язык с динамической типизацией, но очень режут глаза одинарные кавычки. 3. Залог качественного и читабельного кода - это, когда у тебя есть ряд функций и они исполняют по одной индивидуальной задаче. Когда захламляешь код такими функциями а-ля user_pass, в которой ты и пароль принимаешь и записываешь ВСЕ данные в базу, ну такое. Будь это реальный проект можно было бы ой как сильно потеряться в подобных методах.🙃
В документации по psycopg2 написано что нельзя использовать конкатенацию строк(+) или интерполяцию строк(f-строка), возможно это относиться и к SQLite3
Да, в sqlite это тоже делать нельзя, так как это создаёт уязвимость для sql-инъекций. Для таких случаев нужно использовать параметризированный запрос в рамках метода execute
Чтобы не плодить лишний раз глобальные переменные, можно передавать третьим аргументом имя пользователя
bot.register_next_step_handler(message, fill_user_pass, name)
в этом случае функция fill_user_pass будет принимать не один аргумент - message, а два, например, user_name.
def fill_user_pass(message, user_name):
Так можно увеличивать их количество от функции к функции, но лучше эти объекты организовывать в список или словарь
Да, это хорошее решение. Только в случае, когда у тебя много параметров, ты заколебешься их прописывать. В этом случае уже с глобальными можно
Нельзя использовать глобальные переменные в проектах в которых есть несколько пользователей.
Потому что если будет параллельно выполняться несколько запросов, нужные данные просто попадут в другой id !
Это лучший ютубер которого я видел ты очень круто объясняешь темы очень крутой курс смотрю каждое видео и повторяю ща тобой пытаюсь разобраться в каждой строчке очень долго искал такого и не мог найти но ты делаешь невероятное) спасибо большое,удачи в развитии канала
Я думаю переменную name лучше делать не глобальной, а передавать из функции user_name в user_pass напрямую. Можно третьим аргументом в метод bot.register_next_step_handler(message, user_pass, name) добавить. Там бесконечное количество переменных можно передавать таким образом.
без библиотеки не будет работать???
@@alihansadulaev4351 Без какой? Зачем библиотека для этого?
Спасибо огромное за курс! После django и других работ, это кажется просто кайфом.Я очень жду продолжения!! Удачи
Чтобы избежать ошибки
sqlite3.OperationalError: no such column:
нужно было просто добавить кавычки
f'INSERT INTO users (name, pass) VALUES ("{user_name}", "{password}")'
а ещё лучше вообще не использовать f-строки в SQL-запросах, поскольку это небезопасно и в целом является неприемлемой практикой
@@ТттТ-г1щ а чем обычная строка безопаснее f-строки?
@@Markisi0, читал, что f-строки уязвимы перед SQL-инъекциями
вай брат спасибо как ты написал работает как он написал выдает sqlite3.OperationalError: 1 values for 2 columns, не знаешь что делать в таком случае?
@@AlexGold пожалуйста! Судя по описанию ошибки, у тебя идёт попытка вставить одно значение в 2 колонки, то есть забыл где-то второе значение указать. Количество значений должно соответствовать количеству столбцов
Супер тема!!! Очень полезно для меня. Спасибо большое!
Ребята огромная вам благодарность что так круто преподаете все!!!! Спасибо большое отличный курс!
курсы хорошие, но в этом видео большая путанница с базой данных, и автор усложнил заполнение полей
ошибка на 15:25 была связана с синтаксисом SQL, можно было просто обрамить в двойные кавычки вот так (я так и исправил и сработало, а уже потом увидел ваше решение):
cur.execute(f'INSERT INTO users (name, pass) VALUES ("{name}", "{password}")')
Если верить ChatGPT, то так делать не стоит, чтобы не нарваться на SQL-инъекции. Дополнительный аспект по теме кибербезопасности
Надеюсь тут будет про хостинг бота и базы, а то у меня с этим постоянно проблемы
Привет, у меня та же проблема. Ты нашёл решение?
@@alovian7541привет за 2 месяца нашел решение?
Легенда
Уроки супер, очень легко и понятно. Рахмет!
"Рахмет" это спасибо? И если да, то на каком языке?
@@Beik0 Казахский язык 🇰🇿
@@КуанышЖусупов-р1ю спасибо
Спасибо за видео!
А так курсы топ, спасибо Гоше!
Гоша, привет. Очень круто.
Сперва начал проходить курс питону у одного блогера, не понравилось перешёл к Гоше и тут всё прекрасно.
Начал проходить тут связанный с ботами и понял, что пора искать другой канал.
Ощущение, что ты просто постарался сделать максимально ёмко эту работу. Просто напихал всего без особых объяснений.
Курс по Питону был прекрасен, а здесь наскоряк что то слепленное.
И пожалуйста, если ты пишешь код ,а он не работает - не показывай его. Ты просто издеваешься над нами. Мы переписываем, пытаемся разобраться как работает. Ты запускаешь и....оно просто не работает. Так вырежи это, зачем тратить время и силы
Спасибо за курс по питону, но этот курс, я пожалуй, пройду в другом месте
cur.execute("INSERT INTO users (name, pass) VALUES (?, ?)", (name, password))
так будет правильнее с точки зрения синтаксиса sqlite
лучший
Если у вас на моменте 7:42 выдало ошибку:
cur.execute(f'CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)')
sqlite3.OperationalError: incomplete input
Решение:
Надо просто использовать другой способ форматирования строки, например, конкатенацию строк:
query = 'CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))'
cur.execute(query)
Ответ мне помогла найти GPT, поэтому я сам не до конца догнал почему это так работает, а как Гоша написал не работает... GPT внятно не ответила...
ГОША ПОМОГИ ПОЖАЛУЙСТА ПОНЯТЬ почему так?
спасибо!
Спасибо большое за комментарий. У меня тоже была такая же ошибка. Устранила вашим способом.
Thanks.
Я сейчас скажу возможно не самое популярное мнение, но все таки - sqlite3 не сработает по модели mysql, там есть свои моменты, например: id auto_increment p...k, - не будет вводить значения в таблицу, при выборке мы получим значение None, избежать этого можно так - id primary key, name varchar(50), ... либо так - id primary key autoincrement, name varchar(50), ... во втором случае знак "земля" в слове autoincrement не нужен, иначе будет ошибка синтаксиса.
точнее id integer primary key autoincrement. другие варианты у меня не работали
@@evgeniyo2560 4 часа изнасилования мозга и я пришел в комменты поделиться мудростью, чтобы обнаружить, что кто-то уже ответил
Знаете, что находит гугл по запросу sqlite primary key Null? Нифига он не находит
Очень важное замечание, час сидел варианты перебирал
объясняешь круто, но я бы просто передал name 2 значением.
как сделать так, что б в кавычках тоже была подсветка синтаксиса, как на видео? У меня вся строка - 'CREATE TABLE IF...' зеленого цвета, ошибки не подсвечиваются(((
такая же фигня
короче я пишу в vs коде я просто скачал ультилиту SQlite и всё заработало
У меня почему то не раскрашивается работа с sqlite3.Как исправить?
CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))
Вот это почему то пишется полностью зеленым а не так как на видео.
Тоже самое. Смог решить проблему?
@@standoff2_yt77 не смог.Как я понял это из за того что это бесплатная версия и некоторые функции недоступны(
@@czdiejengco нет, у меня тоже самое, оно должно работать. У меня тоже зелёное, но робгтает
Нашли решение? У меня тоже самое...
'CREATE TABLE IF NOT EXISTS qarizdarlar (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(50))'
Подскажите как переместить значение ячейки в sql таблице зная ее строчку и столбец в переменную?
Можно было не мудрить с %. Вот так все заработало
cur.execute(f"INSERT INTO users (name, pass) VALUES('{name}', '{password}')")
В sqlite нет varchar(50). Есть только text, а ограничение прописывается отдельно, иначе не будет работать
Спасибо за видео! У меня вопрос, как отчистить список пользователей?
Хз файл попробуй удалить
...в базе данных всё закодировано, поэтому открывать мы ее не будем
а жаль, если бы открыли, то увидели, что у id значения NULL
Был интересен вот этот вопрос:
coursor.execute("INSERT INTO users (name, pass) VALUES (?, ?)", (name, password))
почему здесь нельзя использовать форматированную строку по типпу f'{name, pass}'
Вот что мне подсказали
Эту штуку нельзя сделать т.к. пользователь мог бы ввести вот такую команду и дропнусть все базу SQL т.к. была бы воспринята как команда
Это называется SQL инъекция вот ее пример:
name = "John'; DROP TABLE users; --"
sql = f"INSERT INTO users (name, pass) VALUES ('{name}', '{password}')"
Да и как заметили вместо симоволов %s оказалось можно использовать ( ?, ?) что чуть чуть удобнее
если я хочу сделать допустим бота который будет хранить некие данные пользователя, как сделать так, чтобы каждому пользователю присваивалась своя бд?
Тебе нужно просто создать таблицу с атрибутами id, user_name, user_id.... (И какие хочешь данные) и просто делаешь запросы на пример по user_id(т.к он уникален у каждого пользователя телеги) и с него берёшь всё данные которые тебе нужны
ребят мой вам совет. зачастую все ваши проблемы в коде это из-за не внимательности.
В 7:30 комманда
cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)')
мне выдавало ошибку по типу: sqlite3.OperationalError: и тд
так вот. у меня ошибка была в том что я просто забыл закрыть скобки в конце...
Для вас задание где я ошибся в коде...
Блин, я сначала когда прочла ваш комментарий, подумала, «ну конечно же я не забыла поставить скобку!»
Потом еще внимательно посмотрела - забыла 🤦♀️
@@АннаРоманова-щ3к ахахах
Думаю на Ruby! вигляд малоб кращий.
А так норм)
А вот кстати вопрос. В каждом хэндлере вы заново подключаетесь к бд и дропаете подключение, это по идее сильно влияет на производительность? А если есть желание разделить проект на модули?
Ребята, подскажите, почему callback_data у меня вообще не работает? всё сделал как в видео, но почему-то вообще не работает(кнопка показывается, но ничего не вызывается)
нашел ответ?
у меня была такая же проблема, я нашел 2 причины:
1) почему-то вариант написания как у автора у меня не работал видимо я что-то не так делал, пришлось использовать по совету комментаторов :
cur.execute(f"INSERT INTO users (name, pass) VALUES ('{name}', '{password}')")
2) я не создавал проект с 0, а использовал файл бота с прошлого урока, причем сильно его сам переработал, дак вот там у меня была другая функция callback, после комментирования которой случилось чудо и все заработало.
ЗЫ. я понимаю, что для вас прошел уже почти год, и может вы разобрались почему конфликтуют функции callback, если так, то поясните, гугление особых результатов не дало, а с учетом того, что эти функции у меня носят разные названия я не особо понимаю принцип их вызова, ведь в строке:
markup.add(types.InlineKeyboardButton('Список пользователей', callback_data='users')) мы ссылаемся на переменную users и не понятно как интерпретатор понимает к какому callback обращаться. Заранее спасибо!
Такое хорошее начало и такой плохой конец 😂
у меня
|table users has no column named name |
что делать?
такая же проблема
нашёл решение?
В 35 линии неправильно написано вообще все, выдает сранную ошибку, вот исправленный вариант cur.execute('INSERT INTO users(name, password) VALUES (?, ?)', (name, password))
Спасибо уж.
Не помогает. Выдало вот что:
cur.execute('INSERT INTO users(name, password) VALUES (?,?)', (name, password))
sqlite3.OperationalError: no such table: users
Спасибо, лучший
Посмотри в conn = sqlite3.connect() возможно просто не правильно записал сам файл
Пишу cur.execute('INSERT INTO pupils (p_name, p_sname) VALUES (?,?)', (user_name, user_sname )) выдает Error binding parameter 0 - probably unsupported type.
почему при создании таблицы, в cure.execute весь текст внутри зеленый, int не воспринимает, как исправить, и почему нельзя сразу в видео показать, что нужно доп установить для работы в пайчарм
Нашёл ответа??
cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)')
sqlite3.OperationalError: incomplete input
помогите пожалуйста, что не так?
Закинь в чат GPT
Вот что мне ответил чат GPT:
The code snippet is missing a closing parenthesis ')' for the CREATE TABLE statement. The correct code should be:
cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))')
Note the closing parenthesis at the end of the statement.
У нас с тобой не хватает еще одной скобки перед закрывающим апострофом '
@@DadundddaD се равно также
крч там еще 1 скобку напиши в конце
@@DadundddaD кстати заработало, но у меня оно зелёным подчеркнуто)
Один моментик, я решил вывести не только имя и пароль, но и id. В сообщении во всех строках было написано ID: None
+
то же самое
нужно прописать id INTEGER PRIMARY KEY AUTOINCREMENT
@@ЕвгенийАлександрович-ь5з спасибо, хоть и спустя 5 месяцев
Способ создания таблицы в видео не работает пришлось лезть в уроки по sqlt3
У телеграма есть ограничения, например на кол-во сообщений в секунду, как будете обрабатывать тротл?
отправится второе сообщение с тем, что не вместилось в первое
Почему то не работает. Строка, там где cur.execute('CREATE TABLE IF NOT EXISTS users (id int )'), она не становится желтой и не работает, она просто тупо зеленая
cur.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(50), password VARCHAR(50))')
Попробую это ввести должно заработать.
@@fovir_fresh спасибо
Что произошло на 4:04? 12 строка cur.execute() прописывается зеленым шрифтом и ничего не делает.
тоже самое
sqlite3.OperationalError: неполный ввод, вот такая вот ошибка
может быть обновили модуль...
Скорее всего вы используете бесплатную версию пайчарм, в которой не поддерживается база данных sql
у многих не поменялся цвет при создании таблицы и у меня в том числе, для тех кто не знает как решить эту проблему, на сколько я понял нужна платная версия пайчарма, у кого другая инфа, буду рад если поделитесь
почему у меня на 5:22 не поменялся цвет с зеленого на такой как в ролик?
Скорее всего у него пользовательская тема, которая перекрашивает текст в разные цвета даже не смотря на кавычки, если это SQLite3 команда. У меня тоже так, так как я не устанавливал темы
Бот все ровно не выдает список и не будет потому что Shadows name 'info' from outer scope
Почему у меня при создании таблицы, когда в кавычки ввожу команду, ничего не работает? Строка даже не подсвечивается
Подскажите пожалуйста, как можно подсвечивать SQL команды в PyCharm Community? Может плагин дополнительный нужен.
Доброго вечера, а можно урок как в телеграм боте отправлять новости. ? К примеру создать простого бота который будет отправлять на Гугл диск для прайсов на товар. А если мы обновили прайсы то мы это как новость написала в боте, и всем кто использует бот в чат пришло уведомления
Не получается. Пишет что нужен пайтон профессионал для использования sql
Ребята в том числе и автор помогите пожалуйста я хочу чтобы список пользователей был доступен только мне как это сделать?
Сделай проверку на id пользователя
не очень понял почему, но он все время пишет введите пароль
В теле функции user_name
внутри должно быть bot.register_next_step_handler(message, user_pass)
У меня сначала было написано bot.register_next_step_handler(message, user_name) и выводило бесконечно "введите пароль", пока не заметил
Друг мой,привет.Полезнве знания,я начинаю свой путь с твоих уроков. Скажи пожалуйста,таблица со списком пользователей доступна только разработчику? А то будет не очень,если у пользователя будут выводиться ники и пароли других юзеров)
привет, можно сделать такую функцию для админа, а у обычных пользотваелей убрать
Kai Angel feat 9mice - SPRAY
Ребят, небольшая помарка, бывает такое что вместо g пишется q, и вылазит ошибочный атрибут. Особенно в register_next_step_handle. Будьте бдительнее :)
появилась проблема в том что этот список не открывается даже если все правильно..
4:14 как переходит из строки в команду?
Что делать если 'CREATE TABLE OF NOT EXISTS' остаётся зелёного цвета, а так же при запуске не создаётся папка с расширением sql как указано в видео
У тебя ошибка, не OF а IF. У меня тоже команда остается зелёного цвета, но всё работает
а как задеплоить бота вместе с базой данных? я пытаюсьзадеплоить обычного бота- вышло. А тот что с базой данных - не вышло
То же самое, сама база данных почему-то не обновляется после выргрузки бота на сервер. Давай если кто-то из нас найдёт решение, друг другу напишем его
уже нашел. Отключи все консоли, и заново запусти бота. И впиши в бота прокси
@@YaroslawKycheraviy ого, а ты получается вообще с хоста убрал бот? И какой прокси используешь? Поделись пожалуйста
я хз честно, мне чел дал куок кода, я вставил и заработало.
@@alovian7541
форматирование через f строку открывает возможность для sql инъекций!!!!!!!!!
Когда будет видео про новый обновленный движок годот 4?
Ребята, а подскажите как сделать, чтоб вот эта получившаяся база отправлялась мне в личку, а не отображалась в диалоге пользователя и бота? Можно допустим оставить кнопку скажем (отправить) и при нажатии база уходила бы сообщением на мой акк в телеге. И еще прикольно было бы, чтоб в базу записывалась дата и время. Но это я думаю сам сделаю )))
Вы не нашли как это реализовать? Я сейчас просто таким же вопросом задался и не могу найти ответ
Спасибо конечно. Но чтобы по курсу выучиться надо быть супер целеустремленным человеком
А нельзя было создать подключение к БД в шапке файла перед декораторами самого бота? Тогда в функциях не надо было переписывать кучу одинакового кода. Тогда
with conn:
cur.execute('SELECT.......')
всего надо прописать ну и вернуть cur.execute('SELECT.......') естественно?
no such table: users чо делать подскажите пж
Почему нет описания функции?🕵️♂️
16:30 у меня так не работает, я сделал так:
cur.execute("""INSERT INTO users(name, pass) VALUES(?, ?)""", (name, password))
Самое первое что я вижу - это 4 кавычки. Ты нафига их 4 поставил? Ставь либо 1, либо двойные.
У меня, после нажатия на список пользователей, выводит две одинаковые стоки с именем и паролем. из за чего может быть?
из-за того, что при двух стартах бота вводил один тот же пароль и логин
Почему когда я очищаю историю у меня нет кнопки Start
а как удалять пользователей с базы данных?
Как включить подсветку внутри кавычек?
Нашёл ответ??
@@MnlopLiolo-gd4meНашли ответи?
Как сделать чтобы человек 1 раз ввел регистрацию а потом не вводил?
А как эту таблицу отчистить потом?
Почему может переменная name быть None а не то что пишу в тг бот
у меня одного файл тупо не создается вообще?
а что будем делать, когда пользователей будет больше, чем вместится в одно сообщение?)
Отправиться второе сообщение в котором будет то, что не вместилось в первое
Зачем вообще отправлять пользователю список пользователей? Он же это просто для примера показал
@@zp4355 Это зависит от ТЗ. Иногда нужно, например, не влезая в интерфейс управления бд - назначить админа, или изменить его роль. Вариаций масса
Помогите ! После того как 1-ый пользователь был создан и добавлен в базу данных - если перезагружаю телеграмм бота, то он уже не предлагает регистрировать пользователя, а просто показывает список с 1-ым пользователем. Только после удаления базы данных, можно повторить процедуру. В чём может быть проблема?
А это не проблема. Файл БД хранит данные независимо от перезагрузки бота. Надо тогда удалять юзера, напр. прописать в коде что при остановке бота БД очищается.
Я уже в агонии пишу этот под каждым видео в надежде на помощь.
Мой бот работает с геолокацией получаемой через location но у меня есть необходимость разграничить координаты полученные через геолокацию телефона и координаты полученные через кнопку телеграм "выбрать вручную", которая появляется если отключена геолокация на телефоне
К chat gpt обращался?
@@zhabitok послал меня и сказал только обычная локация request_location
не выводит список пользователей по какой то причине
У меня вопрос 8:24 почему когда вы снова ввели /start то сообщение не появилось, оно же вроде не должно обрабатывать в 1 раз вы вели старт или во 2 раз
Я думаю скорее всего бот мог воспринять "/start" как имя пользователя.
Здравствуйте, подскажите пожалуйста. Я новичок, хочу написать программу небольшую и у меня возник вопрос. например 1: как тебя зовут? 2: Иван(а) 1: сколько тебе лет? 2; 12 лет(б). 1; Меня зовут (а) и мне (б). как это сделать? в питоне? чтобы быть в последнем сообщении отсылку делать на сообщения. могу код прислать,если надо. подскажите пожалуйста
Это в телеграмм боте?
а как очистить эту строку?
Кто может помочь создать бота
Не подсвечивается желтым после "execute". Что делать??? Не работает как в видео
Ты нашел ответ? Если да то подскажи пожалуйста в чем проблема
ничего не понял, наверно потому что не знаю как работают базы данный
как очистить базу данных?
Как сделать вечные кнопки? У меня они один раз нажимаются, а дальше не работают
Там обработчик событий, срабатывает и на кнопки кидает. А в функции кнопок не прописано, что делать, после того как кнопка нажата
Возможно ли как то открыть sql таблицу созданную в коде в приложении SQLiteStudio?
Да
cur.execute('CREATE TABLE IF NOT EXISTS users (id, ...') у меня все условия в скобках считываются как обычная строка, что мне делать?
cur.execute("CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))")
вот рабочая строка
@@armanvoskanyan816 нет, у меня всё равно строка обычная
не получилось создать таблицу с sql, кто знает решение проблемы?
что не получилось?
Гоша, почему у меня это поле с Execute просто зеленое внутри скобок, как обычный текст? А у тебя выделено как команды. При том, что всё равно работает. Что это?
привет, решил проблему? просто у меня такая же беда
Скорее всего вы используете бесплатную версию пайчарм, в которой не поддерживается база данных sql
Привет👋 У него текст выделен как ошибка.
Это наверное просто плагин такой. Его можно скачать в пайчарме.
Пишет: sqlite3.OperationalError: database is locked
Про создание таблицы вообще непонятно.
Чувак, конструктивчик:
1. Организуй список или словарь.
2. Я понимаю, что питон - язык с динамической типизацией, но очень режут глаза одинарные кавычки.
3. Залог качественного и читабельного кода - это, когда у тебя есть ряд функций и они исполняют по одной индивидуальной задаче. Когда захламляешь код такими функциями а-ля user_pass, в которой ты и пароль принимаешь и записываешь ВСЕ данные в базу, ну такое. Будь это реальный проект можно было бы ой как сильно потеряться в подобных методах.🙃
В документации по psycopg2 написано что нельзя использовать конкатенацию строк(+) или интерполяцию строк(f-строка), возможно это относиться и к SQLite3
Да, в sqlite это тоже делать нельзя, так как это создаёт уязвимость для sql-инъекций. Для таких случаев нужно использовать параметризированный запрос в рамках метода execute
TypeError: 'list' object is not callable, вот что мне даёт
Ты используешь handlers а нужно handler
как вывести ID?
Как зделать 5 конечную звезду как в видео 21:05 в 50 строке
у меня почему-то ошибка на ( callback_data ) кто знает решение?
крч там нужно Button)