Задать вопрос
@aleksegolubev

Как сделать БД для чатов телеграм?

За БД взял SQLITE - ведь насколько я знаю, он самый простой.

Надо что бы когда бота добавляли в новый чат, он создавал или новую таблицу или новую БД - даже не представляю как это будет работать.
При добавление бота он должен создавать новую таблицу, которая будет содержать участников именно этой беседы, какие-либо настройки и так далее.

Как такое можно сделать? Пытался на листочке такое нарисовать - всё равно идей нет. Даже представить не могу, как это будет выглядить.
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Не надо создавать новые таблицы и уж тем более БД. Всё это делается в одной таблице.
| ID записи | ID чата | ID юзера | Прочие данные      | ...
|         1 |     546 |    23456 | Бла, бла, тут со.. | ...
|         2 |     546 |    23456 | Привет, как дела?  | ...
|         3 |    9786 |   786444 | О, есть че?        | ...


А если уж, есть желание действительно создавать целую таблицу на чат, то и тут проблем нет.
Пишешь метод, который создает таблицу в БД с названием включая ИД чата. Например, "chat23456".
CREATE TABLE "chat" + chatId ( ID INTEGER PRIMARY KEY, UserId INTEGER, ... );

По этому имени и обращаешься потом. tableName = "chat" + 23456;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
А зачем отдельная таблица под каждый чат?

Создаем одну таблицу
CREATE TABLE [dbo].[tab_query](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[UpdateId] [int] NOT NULL,
	[UpdateType] [varchar](100) NULL,
	[Message_ID] [int] NOT NULL,
	[first_name] [varchar](100) NULL,
	[last_name] [varchar](100) NULL,
	[chat_id] [int] NOT NULL,
	[text] [varchar](400) NOT NULL,
	[dateins] [datetime] NOT NULL,

Индекс по полю chat_id,
запрос по условию
SELECT * FROM  [dbo].[tab_query] WHERE chat_id = <вставить чат ид>


И не надо городить кучу таблиц.
Ответ написан
Комментировать
Можешь попробовать лёгкую библиотеку Tinybd
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽