Телеграм бот на Python / #4 - SQLite3. Подключение к базе данных

Поделиться
HTML-код
  • Опубликовано: 25 ноя 2024

Комментарии • 298

  • @Markisi0
    @Markisi0 Год назад +66

    Чтобы не плодить лишний раз глобальные переменные, можно передавать третьим аргументом имя пользователя
    bot.register_next_step_handler(message, fill_user_pass, name)
    в этом случае функция fill_user_pass будет принимать не один аргумент - message, а два, например, user_name.
    def fill_user_pass(message, user_name):
    Так можно увеличивать их количество от функции к функции, но лучше эти объекты организовывать в список или словарь

    • @Uideas
      @Uideas 8 месяцев назад +2

      Да, это хорошее решение. Только в случае, когда у тебя много параметров, ты заколебешься их прописывать. В этом случае уже с глобальными можно

    • @cr_obito
      @cr_obito 6 месяцев назад +7

      Нельзя использовать глобальные переменные в проектах в которых есть несколько пользователей.
      Потому что если будет параллельно выполняться несколько запросов, нужные данные просто попадут в другой id !

  • @НикитаМечетин
    @НикитаМечетин Год назад +32

    Это лучший ютубер которого я видел ты очень круто объясняешь темы очень крутой курс смотрю каждое видео и повторяю ща тобой пытаюсь разобраться в каждой строчке очень долго искал такого и не мог найти но ты делаешь невероятное) спасибо большое,удачи в развитии канала

  • @daniilhalytskyi8562
    @daniilhalytskyi8562 Год назад +36

    Я думаю переменную name лучше делать не глобальной, а передавать из функции user_name в user_pass напрямую. Можно третьим аргументом в метод bot.register_next_step_handler(message, user_pass, name) добавить. Там бесконечное количество переменных можно передавать таким образом.

    • @alihansadulaev4351
      @alihansadulaev4351 Год назад

      без библиотеки не будет работать???

    • @zp4355
      @zp4355 Год назад +5

      @@alihansadulaev4351 Без какой? Зачем библиотека для этого?

  • @chesnokov4132
    @chesnokov4132 Год назад +10

    Спасибо огромное за курс! После django и других работ, это кажется просто кайфом.Я очень жду продолжения!! Удачи

  • @Markisi0
    @Markisi0 Год назад +48

    Чтобы избежать ошибки
    sqlite3.OperationalError: no such column:
    нужно было просто добавить кавычки
    f'INSERT INTO users (name, pass) VALUES ("{user_name}", "{password}")'

    • @ТттТ-г1щ
      @ТттТ-г1щ Год назад +3

      а ещё лучше вообще не использовать f-строки в SQL-запросах, поскольку это небезопасно и в целом является неприемлемой практикой

    • @Markisi0
      @Markisi0 Год назад +1

      @@ТттТ-г1щ а чем обычная строка безопаснее f-строки?

    • @ТттТ-г1щ
      @ТттТ-г1щ Год назад +1

      @@Markisi0, читал, что f-строки уязвимы перед SQL-инъекциями

    • @AlexGold
      @AlexGold Год назад +1

      вай брат спасибо как ты написал работает как он написал выдает sqlite3.OperationalError: 1 values for 2 columns, не знаешь что делать в таком случае?

    • @Markisi0
      @Markisi0 Год назад +2

      @@AlexGold пожалуйста! Судя по описанию ошибки, у тебя идёт попытка вставить одно значение в 2 колонки, то есть забыл где-то второе значение указать. Количество значений должно соответствовать количеству столбцов

  • @artembezrukov9799
    @artembezrukov9799 Год назад +4

    Супер тема!!! Очень полезно для меня. Спасибо большое!

  • @МарсельЗагитов-с8ж
    @МарсельЗагитов-с8ж 9 месяцев назад +3

    Ребята огромная вам благодарность что так круто преподаете все!!!! Спасибо большое отличный курс!

    • @anonymprog
      @anonymprog 9 месяцев назад

      курсы хорошие, но в этом видео большая путанница с базой данных, и автор усложнил заполнение полей

  • @JohnHarmRussia
    @JohnHarmRussia Год назад +13

    ошибка на 15:25 была связана с синтаксисом SQL, можно было просто обрамить в двойные кавычки вот так (я так и исправил и сработало, а уже потом увидел ваше решение):
    cur.execute(f'INSERT INTO users (name, pass) VALUES ("{name}", "{password}")')

    • @Dzhama_Omarov
      @Dzhama_Omarov День назад

      Если верить ChatGPT, то так делать не стоит, чтобы не нарваться на SQL-инъекции. Дополнительный аспект по теме кибербезопасности

  • @andreimix
    @andreimix Год назад +6

    Надеюсь тут будет про хостинг бота и базы, а то у меня с этим постоянно проблемы

    • @alovian7541
      @alovian7541 Год назад

      Привет, у меня та же проблема. Ты нашёл решение?

    • @Asadabualek
      @Asadabualek Год назад

      @@alovian7541привет за 2 месяца нашел решение?

  • @orazovdidar
    @orazovdidar 2 месяца назад

    Легенда

  • @КуанышЖусупов-р1ю
    @КуанышЖусупов-р1ю Год назад +1

    Уроки супер, очень легко и понятно. Рахмет!

    • @Beik0
      @Beik0 Год назад

      "Рахмет" это спасибо? И если да, то на каком языке?

    • @КуанышЖусупов-р1ю
      @КуанышЖусупов-р1ю Год назад

      @@Beik0 Казахский язык 🇰🇿

    • @Beik0
      @Beik0 Год назад

      @@КуанышЖусупов-р1ю спасибо

  • @siarheiulas6969
    @siarheiulas6969 Год назад

    Спасибо за видео!

  • @elezthemdev
    @elezthemdev Год назад +4

    А так курсы топ, спасибо Гоше!

  • @grigoriyivanov3741
    @grigoriyivanov3741 Год назад

    Гоша, привет. Очень круто.

  • @AleksChessShow
    @AleksChessShow Год назад +6

    Сперва начал проходить курс питону у одного блогера, не понравилось перешёл к Гоше и тут всё прекрасно.
    Начал проходить тут связанный с ботами и понял, что пора искать другой канал.
    Ощущение, что ты просто постарался сделать максимально ёмко эту работу. Просто напихал всего без особых объяснений.
    Курс по Питону был прекрасен, а здесь наскоряк что то слепленное.
    И пожалуйста, если ты пишешь код ,а он не работает - не показывай его. Ты просто издеваешься над нами. Мы переписываем, пытаемся разобраться как работает. Ты запускаешь и....оно просто не работает. Так вырежи это, зачем тратить время и силы
    Спасибо за курс по питону, но этот курс, я пожалуй, пройду в другом месте

  • @cagletu
    @cagletu 4 месяца назад

    cur.execute("INSERT INTO users (name, pass) VALUES (?, ?)", (name, password))
    так будет правильнее с точки зрения синтаксиса sqlite

  • @fit9009
    @fit9009 Год назад

    лучший

  • @KrykkOff
    @KrykkOff 8 месяцев назад +5

    Если у вас на моменте 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 внятно не ответила...
    ГОША ПОМОГИ ПОЖАЛУЙСТА ПОНЯТЬ почему так?

    • @Hijohs
      @Hijohs 7 месяцев назад

      спасибо!

    • @BBallet123
      @BBallet123 2 месяца назад

      Спасибо большое за комментарий. У меня тоже была такая же ошибка. Устранила вашим способом.

  • @nic-ori
    @nic-ori Год назад +1

    Thanks.

  • @artemalferov4020
    @artemalferov4020 Год назад +4

    Я сейчас скажу возможно не самое популярное мнение, но все таки - sqlite3 не сработает по модели mysql, там есть свои моменты, например: id auto_increment p...k, - не будет вводить значения в таблицу, при выборке мы получим значение None, избежать этого можно так - id primary key, name varchar(50), ... либо так - id primary key autoincrement, name varchar(50), ... во втором случае знак "земля" в слове autoincrement не нужен, иначе будет ошибка синтаксиса.

    • @evgeniyo2560
      @evgeniyo2560 Год назад +1

      точнее id integer primary key autoincrement. другие варианты у меня не работали

    • @dmitrymakarenko8975
      @dmitrymakarenko8975 10 месяцев назад

      @@evgeniyo2560 4 часа изнасилования мозга и я пришел в комменты поделиться мудростью, чтобы обнаружить, что кто-то уже ответил
      Знаете, что находит гугл по запросу sqlite primary key Null? Нифига он не находит

    • @AleksandrKokuashvili
      @AleksandrKokuashvili 4 дня назад

      Очень важное замечание, час сидел варианты перебирал

  • @Saint404www
    @Saint404www 9 месяцев назад

    объясняешь круто, но я бы просто передал name 2 значением.

  • @_Azimut
    @_Azimut Год назад +5

    как сделать так, что б в кавычках тоже была подсветка синтаксиса, как на видео? У меня вся строка - 'CREATE TABLE IF...' зеленого цвета, ошибки не подсвечиваются(((

    • @kiso4974
      @kiso4974 Год назад

      такая же фигня

    • @kiso4974
      @kiso4974 Год назад

      короче я пишу в vs коде я просто скачал ультилиту SQlite и всё заработало

  • @czdiejengco
    @czdiejengco Год назад +16

    У меня почему то не раскрашивается работа с sqlite3.Как исправить?
    CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))
    Вот это почему то пишется полностью зеленым а не так как на видео.

    • @standoff2_yt77
      @standoff2_yt77 Год назад +2

      Тоже самое. Смог решить проблему?

    • @czdiejengco
      @czdiejengco Год назад

      @@standoff2_yt77 не смог.Как я понял это из за того что это бесплатная версия и некоторые функции недоступны(

    • @РусланПетриченко-х4л
      @РусланПетриченко-х4л Год назад +1

      ​@@czdiejengco нет, у меня тоже самое, оно должно работать. У меня тоже зелёное, но робгтает

    • @yuriismakota9574
      @yuriismakota9574 Год назад

      Нашли решение? У меня тоже самое...

    • @Абдул-АзизМахаматдинов
      @Абдул-АзизМахаматдинов Год назад

      'CREATE TABLE IF NOT EXISTS qarizdarlar (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(50))'

  • @МИРАД-е6з
    @МИРАД-е6з Месяц назад +1

    Подскажите как переместить значение ячейки в sql таблице зная ее строчку и столбец в переменную?

  • @s1m156
    @s1m156 Год назад +3

    Можно было не мудрить с %. Вот так все заработало
    cur.execute(f"INSERT INTO users (name, pass) VALUES('{name}', '{password}')")

  • @drekouli4291
    @drekouli4291 6 месяцев назад +1

    В sqlite нет varchar(50). Есть только text, а ограничение прописывается отдельно, иначе не будет работать

  • @kotlayn
    @kotlayn Год назад +6

    Спасибо за видео! У меня вопрос, как отчистить список пользователей?

    • @medal2003
      @medal2003 24 дня назад

      Хз файл попробуй удалить

  • @Qwex1992
    @Qwex1992 Год назад +2

    ...в базе данных всё закодировано, поэтому открывать мы ее не будем
    а жаль, если бы открыли, то увидели, что у 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 оказалось можно использовать ( ?, ?) что чуть чуть удобнее

  • @stouneespring6051
    @stouneespring6051 Год назад +5

    если я хочу сделать допустим бота который будет хранить некие данные пользователя, как сделать так, чтобы каждому пользователю присваивалась своя бд?

    • @1NewUser1
      @1NewUser1 Год назад +2

      Тебе нужно просто создать таблицу с атрибутами id, user_name, user_id.... (И какие хочешь данные) и просто делаешь запросы на пример по user_id(т.к он уникален у каждого пользователя телеги) и с него берёшь всё данные которые тебе нужны

  • @theleliks
    @theleliks 6 месяцев назад +2

    ребят мой вам совет. зачастую все ваши проблемы в коде это из-за не внимательности.
    В 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к
      @АннаРоманова-щ3к 3 месяца назад +1

      Блин, я сначала когда прочла ваш комментарий, подумала, «ну конечно же я не забыла поставить скобку!»
      Потом еще внимательно посмотрела - забыла 🤦‍♀️

    • @theleliks
      @theleliks 3 месяца назад

      @@АннаРоманова-щ3к ахахах

  • @volodymyrm5326
    @volodymyrm5326 Год назад

    Думаю на Ruby! вигляд малоб кращий.
    А так норм)

  • @solark7608
    @solark7608 4 месяца назад +1

    А вот кстати вопрос. В каждом хэндлере вы заново подключаетесь к бд и дропаете подключение, это по идее сильно влияет на производительность? А если есть желание разделить проект на модули?

  • @soslantadtaev2627
    @soslantadtaev2627 Год назад +3

    Ребята, подскажите, почему callback_data у меня вообще не работает? всё сделал как в видео, но почему-то вообще не работает(кнопка показывается, но ничего не вызывается)

    • @maloy.8313
      @maloy.8313 Год назад

      нашел ответ?

    • @sedoy_dedushka
      @sedoy_dedushka 3 месяца назад +1

      у меня была такая же проблема, я нашел 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 обращаться. Заранее спасибо!

  • @Шахматы-б3ы
    @Шахматы-б3ы 2 месяца назад

    Такое хорошее начало и такой плохой конец 😂

  • @Bomboclyack
    @Bomboclyack 9 месяцев назад +2

    у меня
    |table users has no column named name |
    что делать?

    • @CrashRollers
      @CrashRollers 9 месяцев назад

      такая же проблема

    • @M1dn1ght_02
      @M1dn1ght_02 5 месяцев назад

      нашёл решение?

  • @fovir_fresh
    @fovir_fresh Год назад +3

    В 35 линии неправильно написано вообще все, выдает сранную ошибку, вот исправленный вариант cur.execute('INSERT INTO users(name, password) VALUES (?, ?)', (name, password))

    • @Ze1myy
      @Ze1myy Год назад

      Спасибо уж.

    • @АндрейКасьянов-з8г
      @АндрейКасьянов-з8г Год назад

      Не помогает. Выдало вот что:
      cur.execute('INSERT INTO users(name, password) VALUES (?,?)', (name, password))
      sqlite3.OperationalError: no such table: users

    • @semenosemenitel1046
      @semenosemenitel1046 Год назад

      Спасибо, лучший

    • @AMONRA_O
      @AMONRA_O Год назад

      Посмотри в conn = sqlite3.connect() возможно просто не правильно записал сам файл

    • @ЕвгенийАлександрович-ь5з
      @ЕвгенийАлександрович-ь5з Год назад

      Пишу cur.execute('INSERT INTO pupils (p_name, p_sname) VALUES (?,?)', (user_name, user_sname )) выдает Error binding parameter 0 - probably unsupported type.

  • @lolikfas2614
    @lolikfas2614 Год назад +1

    почему при создании таблицы, в cure.execute весь текст внутри зеленый, int не воспринимает, как исправить, и почему нельзя сразу в видео показать, что нужно доп установить для работы в пайчарм

  • @oddww
    @oddww Год назад +4

    cur.execute('CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50)')
    sqlite3.OperationalError: incomplete input
    помогите пожалуйста, что не так?

    • @romanvishnyakov6835
      @romanvishnyakov6835 Год назад

      Закинь в чат GPT

    • @DadundddaD
      @DadundddaD Год назад +3

      Вот что мне ответил чат 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.
      У нас с тобой не хватает еще одной скобки перед закрывающим апострофом '

    • @elezthemdev
      @elezthemdev Год назад

      @@DadundddaD се равно также

    • @elezthemdev
      @elezthemdev Год назад

      крч там еще 1 скобку напиши в конце

    • @elezthemdev
      @elezthemdev Год назад +2

      @@DadundddaD кстати заработало, но у меня оно зелёным подчеркнуто)

  • @КоляИсаев-ы1е
    @КоляИсаев-ы1е Год назад +1

    Один моментик, я решил вывести не только имя и пароль, но и id. В сообщении во всех строках было написано ID: None

  • @nubarator
    @nubarator 2 месяца назад +1

    Способ создания таблицы в видео не работает пришлось лезть в уроки по sqlt3

  • @BarBrain1
    @BarBrain1 Год назад +2

    У телеграма есть ограничения, например на кол-во сообщений в секунду, как будете обрабатывать тротл?

    • @TimQ2
      @TimQ2 Год назад

      отправится второе сообщение с тем, что не вместилось в первое

  • @williwonka1747
    @williwonka1747 Год назад +2

    Почему то не работает. Строка, там где cur.execute('CREATE TABLE IF NOT EXISTS users (id int )'), она не становится желтой и не работает, она просто тупо зеленая

    • @fovir_fresh
      @fovir_fresh Год назад +4

      cur.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(50), password VARCHAR(50))')

    • @fovir_fresh
      @fovir_fresh Год назад +1

      Попробую это ввести должно заработать.

    • @slowpokeui7683
      @slowpokeui7683 Год назад

      @@fovir_fresh спасибо

  • @АртёмБеленков-е5ш
    @АртёмБеленков-е5ш Год назад +2

    Что произошло на 4:04? 12 строка cur.execute() прописывается зеленым шрифтом и ничего не делает.

    • @SlouN01
      @SlouN01 Год назад

      тоже самое
      sqlite3.OperationalError: неполный ввод, вот такая вот ошибка
      может быть обновили модуль...

    • @kizuko4149
      @kizuko4149 Год назад

      Скорее всего вы используете бесплатную версию пайчарм, в которой не поддерживается база данных sql

  • @ГригорийГерда
    @ГригорийГерда 10 месяцев назад

    у многих не поменялся цвет при создании таблицы и у меня в том числе, для тех кто не знает как решить эту проблему, на сколько я понял нужна платная версия пайчарма, у кого другая инфа, буду рад если поделитесь

  • @ВикторБехтеев-ь7д
    @ВикторБехтеев-ь7д 10 месяцев назад +9

    почему у меня на 5:22 не поменялся цвет с зеленого на такой как в ролик?

    • @DegenerationTeam
      @DegenerationTeam 9 месяцев назад +1

      Скорее всего у него пользовательская тема, которая перекрашивает текст в разные цвета даже не смотря на кавычки, если это SQLite3 команда. У меня тоже так, так как я не устанавливал темы

  • @Apkaka_pon41k
    @Apkaka_pon41k 28 дней назад

    Бот все ровно не выдает список и не будет потому что Shadows name 'info' from outer scope

  • @MrRados
    @MrRados Год назад

    Почему у меня при создании таблицы, когда в кавычки ввожу команду, ничего не работает? Строка даже не подсвечивается

  • @homeaccount4100
    @homeaccount4100 7 месяцев назад

    Подскажите пожалуйста, как можно подсвечивать SQL команды в PyCharm Community? Может плагин дополнительный нужен.

  • @ГригорійСтрамоус
    @ГригорійСтрамоус 6 месяцев назад

    Доброго вечера, а можно урок как в телеграм боте отправлять новости. ? К примеру создать простого бота который будет отправлять на Гугл диск для прайсов на товар. А если мы обновили прайсы то мы это как новость написала в боте, и всем кто использует бот в чат пришло уведомления

  • @DR-rs9ux
    @DR-rs9ux 10 месяцев назад

    Не получается. Пишет что нужен пайтон профессионал для использования sql

  • @SahinIsmayilov-we2ok
    @SahinIsmayilov-we2ok 2 месяца назад +1

    Ребята в том числе и автор помогите пожалуйста я хочу чтобы список пользователей был доступен только мне как это сделать?

    • @ilyamnl1838
      @ilyamnl1838 2 месяца назад

      Сделай проверку на id пользователя

  • @alekseysivchik
    @alekseysivchik 8 месяцев назад +1

    не очень понял почему, но он все время пишет введите пароль

    • @SemyonBorodin
      @SemyonBorodin 7 месяцев назад +1

      В теле функции user_name
      внутри должно быть bot.register_next_step_handler(message, user_pass)
      У меня сначала было написано bot.register_next_step_handler(message, user_name) и выводило бесконечно "введите пароль", пока не заметил

  • @maxgaming190
    @maxgaming190 10 месяцев назад

    Друг мой,привет.Полезнве знания,я начинаю свой путь с твоих уроков. Скажи пожалуйста,таблица со списком пользователей доступна только разработчику? А то будет не очень,если у пользователя будут выводиться ники и пароли других юзеров)

    • @anonymprog
      @anonymprog 9 месяцев назад

      привет, можно сделать такую функцию для админа, а у обычных пользотваелей убрать

  • @shakursosihui9687
    @shakursosihui9687 11 месяцев назад

    Kai Angel feat 9mice - SPRAY

  • @gazparini
    @gazparini 10 дней назад

    Ребят, небольшая помарка, бывает такое что вместо g пишется q, и вылазит ошибочный атрибут. Особенно в register_next_step_handle. Будьте бдительнее :)

  • @valecr228
    @valecr228 10 месяцев назад

    появилась проблема в том что этот список не открывается даже если все правильно..

  • @em_pty_
    @em_pty_ 6 месяцев назад

    4:14 как переходит из строки в команду?

  • @AlekseevPavel77
    @AlekseevPavel77 6 месяцев назад

    Что делать если 'CREATE TABLE OF NOT EXISTS' остаётся зелёного цвета, а так же при запуске не создаётся папка с расширением sql как указано в видео

    • @igor_keler5954
      @igor_keler5954 5 месяцев назад

      У тебя ошибка, не OF а IF. У меня тоже команда остается зелёного цвета, но всё работает

  • @YaroslawKycheraviy
    @YaroslawKycheraviy Год назад +1

    а как задеплоить бота вместе с базой данных? я пытаюсьзадеплоить обычного бота- вышло. А тот что с базой данных - не вышло

    • @alovian7541
      @alovian7541 Год назад

      То же самое, сама база данных почему-то не обновляется после выргрузки бота на сервер. Давай если кто-то из нас найдёт решение, друг другу напишем его

    • @YaroslawKycheraviy
      @YaroslawKycheraviy Год назад

      уже нашел. Отключи все консоли, и заново запусти бота. И впиши в бота прокси

    • @alovian7541
      @alovian7541 Год назад

      @@YaroslawKycheraviy ого, а ты получается вообще с хоста убрал бот? И какой прокси используешь? Поделись пожалуйста

    • @YaroslawKycheraviy
      @YaroslawKycheraviy Год назад

      я хз честно, мне чел дал куок кода, я вставил и заработало.
      ​@@alovian7541

  • @zaimoflyfe4222
    @zaimoflyfe4222 Год назад

    форматирование через f строку открывает возможность для sql инъекций!!!!!!!!!

  • @kerimovske
    @kerimovske Год назад

    Когда будет видео про новый обновленный движок годот 4?

  • @nikitamorozov8065
    @nikitamorozov8065 8 месяцев назад +1

    Ребята, а подскажите как сделать, чтоб вот эта получившаяся база отправлялась мне в личку, а не отображалась в диалоге пользователя и бота? Можно допустим оставить кнопку скажем (отправить) и при нажатии база уходила бы сообщением на мой акк в телеге. И еще прикольно было бы, чтоб в базу записывалась дата и время. Но это я думаю сам сделаю )))

    • @qr2890
      @qr2890 3 месяца назад

      Вы не нашли как это реализовать? Я сейчас просто таким же вопросом задался и не могу найти ответ

  • @penthousex61
    @penthousex61 4 месяца назад

    Спасибо конечно. Но чтобы по курсу выучиться надо быть супер целеустремленным человеком

  • @Roman1971ism
    @Roman1971ism 8 месяцев назад

    А нельзя было создать подключение к БД в шапке файла перед декораторами самого бота? Тогда в функциях не надо было переписывать кучу одинакового кода. Тогда
    with conn:
    cur.execute('SELECT.......')
    всего надо прописать ну и вернуть cur.execute('SELECT.......') естественно?

  • @helenblossom4648
    @helenblossom4648 9 месяцев назад

    no such table: users чо делать подскажите пж

  • @Ai_crearor
    @Ai_crearor Год назад

    Почему нет описания функции?🕵️‍♂️

  • @opex51
    @opex51 Год назад +1

    16:30 у меня так не работает, я сделал так:
    cur.execute("""INSERT INTO users(name, pass) VALUES(?, ?)""", (name, password))

    • @КабаковЕвгений-з7ф
      @КабаковЕвгений-з7ф Год назад

      Самое первое что я вижу - это 4 кавычки. Ты нафига их 4 поставил? Ставь либо 1, либо двойные.

  • @Максим-к2ц2у
    @Максим-к2ц2у 7 месяцев назад

    У меня, после нажатия на список пользователей, выводит две одинаковые стоки с именем и паролем. из за чего может быть?

    • @kotik7493
      @kotik7493 6 месяцев назад

      из-за того, что при двух стартах бота вводил один тот же пароль и логин

  • @SergeyLuchin
    @SergeyLuchin Год назад

    Почему когда я очищаю историю у меня нет кнопки Start

  • @Dan-d1
    @Dan-d1 25 дней назад

    а как удалять пользователей с базы данных?

  • @Narlit
    @Narlit Год назад +1

    Как включить подсветку внутри кавычек?

  • @AIRECOVER
    @AIRECOVER Год назад

    Как сделать чтобы человек 1 раз ввел регистрацию а потом не вводил?

  • @ХомкаПлатон
    @ХомкаПлатон 11 месяцев назад

    А как эту таблицу отчистить потом?

  • @Volton00
    @Volton00 10 месяцев назад

    Почему может переменная name быть None а не то что пишу в тг бот

  • @absolutecontrast1534
    @absolutecontrast1534 5 месяцев назад +1

    у меня одного файл тупо не создается вообще?

  • @se1dhe
    @se1dhe Год назад +5

    а что будем делать, когда пользователей будет больше, чем вместится в одно сообщение?)

    • @serpentlook
      @serpentlook Год назад +1

      Отправиться второе сообщение в котором будет то, что не вместилось в первое

    • @zp4355
      @zp4355 Год назад

      Зачем вообще отправлять пользователю список пользователей? Он же это просто для примера показал

    • @se1dhe
      @se1dhe Год назад

      @@zp4355 Это зависит от ТЗ. Иногда нужно, например, не влезая в интерфейс управления бд - назначить админа, или изменить его роль. Вариаций масса

  • @Dmitrijs.Skorohodovs
    @Dmitrijs.Skorohodovs Год назад

    Помогите ! После того как 1-ый пользователь был создан и добавлен в базу данных - если перезагружаю телеграмм бота, то он уже не предлагает регистрировать пользователя, а просто показывает список с 1-ым пользователем. Только после удаления базы данных, можно повторить процедуру. В чём может быть проблема?

    • @Lnx_Mint
      @Lnx_Mint 10 месяцев назад

      А это не проблема. Файл БД хранит данные независимо от перезагрузки бота. Надо тогда удалять юзера, напр. прописать в коде что при остановке бота БД очищается.

  • @topmazila8766
    @topmazila8766 Год назад

    Я уже в агонии пишу этот под каждым видео в надежде на помощь.
    Мой бот работает с геолокацией получаемой через location но у меня есть необходимость разграничить координаты полученные через геолокацию телефона и координаты полученные через кнопку телеграм "выбрать вручную", которая появляется если отключена геолокация на телефоне

    • @zhabitok
      @zhabitok Год назад

      К chat gpt обращался?

    • @topmazila8766
      @topmazila8766 Год назад

      @@zhabitok послал меня и сказал только обычная локация request_location

  • @АртёмГрушев-ш8я
    @АртёмГрушев-ш8я 5 месяцев назад

    не выводит список пользователей по какой то причине

  • @frixll
    @frixll Год назад

    У меня вопрос 8:24 почему когда вы снова ввели /start то сообщение не появилось, оно же вроде не должно обрабатывать в 1 раз вы вели старт или во 2 раз

    • @sverhusmotru2432
      @sverhusmotru2432 3 месяца назад +1

      Я думаю скорее всего бот мог воспринять "/start" как имя пользователя.

  • @whabeng
    @whabeng 7 месяцев назад

    Здравствуйте, подскажите пожалуйста. Я новичок, хочу написать программу небольшую и у меня возник вопрос. например 1: как тебя зовут? 2: Иван(а) 1: сколько тебе лет? 2; 12 лет(б). 1; Меня зовут (а) и мне (б). как это сделать? в питоне? чтобы быть в последнем сообщении отсылку делать на сообщения. могу код прислать,если надо. подскажите пожалуйста

  • @w1ndyyy71
    @w1ndyyy71 11 месяцев назад

    а как очистить эту строку?

  • @moydomsnylia
    @moydomsnylia Год назад

    Кто может помочь создать бота

  • @liebeDURASTA
    @liebeDURASTA Год назад

    Не подсвечивается желтым после "execute". Что делать??? Не работает как в видео

    • @rafe7182
      @rafe7182 Год назад

      Ты нашел ответ? Если да то подскажи пожалуйста в чем проблема

  • @МаксимКучин-ч3я
    @МаксимКучин-ч3я Месяц назад

    ничего не понял, наверно потому что не знаю как работают базы данный

  • @fergus5013
    @fergus5013 4 месяца назад

    как очистить базу данных?

  • @ghosttt4299
    @ghosttt4299 Год назад

    Как сделать вечные кнопки? У меня они один раз нажимаются, а дальше не работают

    • @romanvishnyakov6835
      @romanvishnyakov6835 Год назад

      Там обработчик событий, срабатывает и на кнопки кидает. А в функции кнопок не прописано, что делать, после того как кнопка нажата

  • @Lepeha-py2gn
    @Lepeha-py2gn Год назад

    Возможно ли как то открыть sql таблицу созданную в коде в приложении SQLiteStudio?

  • @elsakuray3733
    @elsakuray3733 10 месяцев назад

    cur.execute('CREATE TABLE IF NOT EXISTS users (id, ...') у меня все условия в скобках считываются как обычная строка, что мне делать?

    • @armanvoskanyan816
      @armanvoskanyan816 10 месяцев назад

      cur.execute("CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))")

    • @armanvoskanyan816
      @armanvoskanyan816 10 месяцев назад

      вот рабочая строка

    • @elsakuray3733
      @elsakuray3733 9 месяцев назад

      @@armanvoskanyan816 нет, у меня всё равно строка обычная

  • @markbackulin2737
    @markbackulin2737 10 месяцев назад

    не получилось создать таблицу с sql, кто знает решение проблемы?

    • @anonymprog
      @anonymprog 9 месяцев назад

      что не получилось?

  • @ViralVideoEditions
    @ViralVideoEditions Год назад +8

    Гоша, почему у меня это поле с Execute просто зеленое внутри скобок, как обычный текст? А у тебя выделено как команды. При том, что всё равно работает. Что это?

    • @Гейбурашка
      @Гейбурашка Год назад +3

      привет, решил проблему? просто у меня такая же беда

    • @kizuko4149
      @kizuko4149 Год назад +1

      Скорее всего вы используете бесплатную версию пайчарм, в которой не поддерживается база данных sql

    • @ХасанЗоиров-с4о
      @ХасанЗоиров-с4о Год назад +1

      Привет👋 У него текст выделен как ошибка.

    • @ГлебТретников
      @ГлебТретников Год назад +1

      Это наверное просто плагин такой. Его можно скачать в пайчарме.

  • @DadundddaD
    @DadundddaD Год назад

    Пишет: sqlite3.OperationalError: database is locked

  • @DmVBabich
    @DmVBabich Месяц назад

    Про создание таблицы вообще непонятно.

  • @fromTARDIS
    @fromTARDIS 10 месяцев назад

    Чувак, конструктивчик:
    1. Организуй список или словарь.
    2. Я понимаю, что питон - язык с динамической типизацией, но очень режут глаза одинарные кавычки.
    3. Залог качественного и читабельного кода - это, когда у тебя есть ряд функций и они исполняют по одной индивидуальной задаче. Когда захламляешь код такими функциями а-ля user_pass, в которой ты и пароль принимаешь и записываешь ВСЕ данные в базу, ну такое. Будь это реальный проект можно было бы ой как сильно потеряться в подобных методах.🙃

  • @alexmais9549
    @alexmais9549 Год назад +2

    В документации по psycopg2 написано что нельзя использовать конкатенацию строк(+) или интерполяцию строк(f-строка), возможно это относиться и к SQLite3

    • @ДенисКарянов
      @ДенисКарянов Год назад

      Да, в sqlite это тоже делать нельзя, так как это создаёт уязвимость для sql-инъекций. Для таких случаев нужно использовать параметризированный запрос в рамках метода execute

  • @yuliaorlova6918
    @yuliaorlova6918 Год назад

    TypeError: 'list' object is not callable, вот что мне даёт

    • @multyplicathion3485
      @multyplicathion3485 10 месяцев назад

      Ты используешь handlers а нужно handler

  • @vladborod8724
    @vladborod8724 Год назад

    как вывести ID?

  • @Funto-zl6ly
    @Funto-zl6ly 8 месяцев назад

    Как зделать 5 конечную звезду как в видео 21:05 в 50 строке

  • @elezthemdev
    @elezthemdev Год назад

    у меня почему-то ошибка на ( callback_data ) кто знает решение?

    • @elezthemdev
      @elezthemdev Год назад

      крч там нужно Button)