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

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

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

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

Как такое можно сделать? Пытался на листочке такое нарисовать - всё равно идей нет. Даже представить не могу, как это будет выглядить.
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы