Бот является копией сервиса по обмену bib.dev
1. Установить postgreSQL. BipExchangeBot используется 11.
2. Создать базу данных.
3. Установить параметры .ENV
- Показать текущий курс BIP/USD.
- Покупка BIP.
- Продать BIP.
- Показать лоты на продажу.
- Отображение привествия.
- Команда start.
- Команда settings. Для изменения языка.
- Переделать главное меню из кнопок в клавиатуру.
- Сделать возможность показать bitcoin адреса, которые вводил ранее пользователь как подсказки.
- Сделать возможность показать minter адреса, которые вводил ранее пользователь как подсказки.
- Сделать возможность показать email адреса, которые вводил ранее пользователь как подсказки.
- Сделать возможность выбор цены за монеты из предложенных.
Бот выполняет запрос и получает текующий курс.
- При нажатии кнопки "Купить BIP" бот собирает данные: минтер адрес (куда прислать купленные BIP) и email адрес.
- Бот передает собранные данный в запрос и получает адрес для депозита.
- При отправки адреса запускается горутина
CheckStatusBuy
. Таймер по умолчанию установлен на 2 минуты - время для депозита BTC. 4. По истечению этого времени бот прекращает мониторить эту операцию и выходит из горутины. - Если деньги пришли вовремя, то бот отправляет уведомление новый депозит и начинает опрос пока у транзакции перевода BTC не будет 2 подтверждения.
- Как только это случилось, то бот отправляет уведомление, что обмен успешен и монеты BIP пришли на счет.
- При нажатии кнопки "Продать BIP" бот собирает данные: биткоин адрес (куда прислать btc с проданных BIP) и название монеты, цену за монету.
- Бот передает собранные данный в запрос и получает адрес для депозита и тэг.
- При отправки адреса запускается горутина
CheckStatusSell
. Таймер по умолчанию установлен на 2 минуты - время для депозита BIP. - По истечению этого времени бот прекращает мониторить эту операцию и выходит из горутины.
- Если деньги пришли вовремя, то бот отправляет уведомление новый депозит.
- Лот сохраняется в базу данных.
- Каждый раз как только пользователь пишет боту, обновляется история его адреса и информация сколько было продано монет с лота.
- Если количество монет не изменилось с момента их внесения за неделю, то лот удалятся из базы данных.
- При нажатии на кнопку "Показать лоты на продажу" бот делает запрос к базе данных, получая все лоты, связанные с ID пользователя и отправляя ему: уникальный tag, название монеты, цену за монету, остаток монет, дату последней покупки монет и дату размещения лота.
Tag: FFY37X9kRfvf
Coin: MNT Price: 1000
Amount: 1000
Minted address: Mx1188d4944ceb8eb7bfed553a35461
Created at: 2019-08-27 16:48:12
Last sell at: 2019-08-27 16:52:26
Реляционная база данных PostgeSQL 11.
- Users. Хранит язык, который выбрал пользователь.
create table if not exists users (
id INT NOT NULL,
chat_id BIGINT NOT NULL,
lang VARCHAR(8),
PRIMARY KEY (id)
);
- Loots. Хранит информации о размещении лота пользователем и истории продажи этих монет.
create table if not exists loots (
id SERIAL,
user_id INT NOT NULL,
tag VARCHAR(255),
coin VARCHAR(255),
price INT,
amount VARCHAR(255),
minter_address VARCHAR(255),
created_at timestamp,
last_sell_at timestamp,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users (id)
);