Как создать телеграм бота - демо работы бота Telegram с примерами кода
2. Отправьте себе сообщение с сайта
3. Отправьте ту же форму, но с галочкой "С кнопками" - сообщение будет с кнопками-командами, которые вы можете задействовать
4. Давайте изменим свою тему сайта через Телеграм. Дайте боту следующую команду theme GUID pink (или green, gray). GUID возьмите под названием формы выше.
После выполнения команды в телеграме перезагрузите страницу - при этом у вас загрузится выбранная тема.
5. Попробуйте найти свой день рождения в круглом количестве дней. Напишите боту команду birth dd.mm.yyyy, например, birth 15.05.1980
Документация по телеграм боту - https://falcon.web-automation.ru/docs/telegram-boty-i-otpravka-soobshcheniy-v-telegram
Как реализовать данного телеграм-бота
Форма SaveItem процедура (отправка сообщения в телеграм):
CREATE PROCEDURE [dbo].[fm_watch_sendTelegramMessage_saveItem]
@username nvarchar(256),
@itemID int,
@parameters ExtendedDictionaryParameter readonly
AS
BEGIN
declare @telegram nvarchar(128) = (select value2 from @parameters where [key]='telegram')
declare @message nvarchar(max) = (select value2 from @parameters where [key]='message')
declare @withButtons bit = (select try_cast(value2 as bit) from @parameters where [key]='withButtons')
if(left(@telegram, 1) <> '@') set @telegram = '@' + @telegram
-- 1 SELECT (Result, Msg)
select 1 Result, 'Отправлено' Msg
declare @ButtonsJSON nvarchar(max) = ''
if(@withButtons = 1) begin
set @ButtonsJSON = '
{
"oneTimeKeyboard": false,
"resizeKeyboard": true,
"replyButtons": [
[
{"text": "Дата"},
{"text": "Время"}
],
[
{"text": "День"},
{"text": "Месяц"},
{"text": "Год"}
]
]
} '
end
select 'telegram' type, @telegram [to], @message [text], @ButtonsJSON buttonsJSON
END
Код процедуры бота:
ALTER PROCEDURE [dbo].[telegram_bot_action]
@parameters DictionaryParameter READONLY, -- входящие параметры для внутренней обработки
@text nvarchar(max),
@messageID int,
@chatID int,
@messageType nvarchar(128),
@updateType nvarchar(128),
@telegramUsername nvarchar(256),
@firstName nvarchar(256)
AS
BEGIN
-- select 1 - результат
-- select 2 - команда select 'sendMessage' [Type], @response [Text], @chatID ChatId, @messageID ReplyToMessageId, 0 DisableNotification
-- select 3 - кнопки дополнительные select '' Text, '' Url, '' CallbackData
declare @request nvarchar(max)=@text, @response nvarchar(max)='',
@clearCommand bit = 1, -- признак что необходимо очистить текущую команду для юзера (устанавливаем в false. когда у нас выполняется мультикоманда из нескольких шагов)
@currentCommand nvarchar(256), @currentCommandStep int, @currentCommandData nvarchar(max), -- текущая команда (когда команда выполяется в несколько действий)
@found bit = 0, -- признак что команда найдена
@tgSettingID int, -- id настроек юзера из tg_settings
@userID int -- id связанного юзера из as_users
set @telegramUsername = lower(@telegramUsername)
select top 1 @userID = id from as_users where lower(telegram) = @telegramUsername and telegramChatID is null
if(@userID is not null) begin
update as_users set telegramChatID = @chatID
where id= @userID
end
select @tgSettingID = id, @currentCommand = currentCommand, @currentCommandStep = currentCommandStep, @currentCommandData = currentCommandData
from tg_settings where lower(telegram) = @telegramUsername
if(@tgSettingID is null) begin
insert into tg_settings (telegram, chatID, name, sendUpdates, sendAdvices)
values (@telegramUsername, @chatID, @firstName, 1, 1)
set @tgSettingID = scope_identity()
end
-- execute as_print @text
-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if(left(@text,6)='/start')
begin
set @response = 'Привет ' + @telegramUsername+ ' / '+ @firstName + ' ' + CAST(0x3DD801DE AS NVARCHAR(MAX))
select 1 Result, '' Msg
select 'sendMessage' [Type],
@response [Text],
@chatID ChatId,
@messageID ReplyToMessageId,
1 DisableNotification,
'' ButtonsJSON
set @found = 1
end
-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if(@text like 'birth %') begin
declare @dt nvarchar(128) = substring(@text, 7, len(@text)-5)
-- сохраняем форму (добавление/обновление некой сущности)
declare @date date, @msg nvarchar(max) = '', @temp nvarchar(max)
set @date = try_convert(date, @dt, 104)
if(@date is null) begin
set @msg = 'Дата должна быть в формате dd.mm.yyyy'
end else begin
declare @days nvarchar(max) = '10,100,200.300,400,500,600,700,800,900', @num int = 1000
while (@num<35000) begin
set @days = @days+','+cast(@num as nvarchar)
set @num = @num+100
end
SELECT @temp = STUFF((
SELECT iif(year(dateadd(day, try_cast(Value as int), @date))=year(getdate()+1),
' '+Value+' дн. - '+ try_convert(nvarchar, dateadd(day, try_cast(Value as int), @date), 104)+char(10),
'')
FROM (
select Value from dbo.split(@days,',')
) t1
FOR XML PATH, TYPE).value('.[1]','nvarchar(max)' ), 1, 1, '')
set @msg = @temp
if(@msg='') begin
set @msg = 'Ближайших круглых дат не найдено'
end
end
set @response = @msg
select 1 Result, '' Msg
select 'sendMessage' [Type],
@response [Text],
@chatID ChatId,
0 ReplyToMessageId,
1 DisableNotification
set @found = 1
end
-- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if(lower(@text) in ('день', 'месяц', 'год', 'дата', 'время'))
begin
declare @ddt nvarchar(max) = cast( try_convert(nvarchar(10), getdate(), 104) as nvarchar(max))
set @response = case lower(@text)
when 'день' then cast(datepart(day, getdate()) as nvarchar)
when 'месяц' then DATENAME(mm,GETDATE())
when 'год' then cast(datepart(year, getdate()) as nvarchar)
when 'дата' then convert(nvarchar(10), getdate(), 104)
when 'время' then try_convert(nvarchar(5), getdate(), 108)
end
select 1 Result, '' Msg
select 'sendMessage' [Type],
@response [Text],
@chatID ChatId,
0 ReplyToMessageId,
0 DisableNotification
set @found = 1
end
if(left(@text, 6) ='theme ')
begin
declare @guid nvarchar(128) = (select top 1 value from dbo.split(@text, ' ') where num=2)
declare @theme nvarchar(128) = (select top 1 value from dbo.split(@text, ' ') where num=3)
declare @themeRes nvarchar(128) = 'OK'
if(@theme in ('green', 'gray', 'pink')) begin
update as_userSettings set theme = @theme where falconGuid = @guid
end else begin
set @themeRes = 'Неверно указана тема или Guid'
end
select 1 Result, '' Msg
select 'sendMessage' [Type],
@themeRes [Text],
@chatID ChatId,
0 ReplyToMessageId,
0 DisableNotification
set @found = 1
end
-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- Непонятная команда
if(@chatID>0 and @found=0) begin
set @response = 'Не понял Вас. Введине верную команду'
select 1 Result, '' Msg
select 'sendMessage' [Type],
@response [Text],
@chatID ChatId,
@messageID ReplyToMessageId,
0 DisableNotification
end
if(@clearCommand=1)begin
update tg_settings set currentCommand='', currentCommandStep=0, currentCommandData = ''
where id = @tgSettingID
end
-- save log
insert into tg_log(telegram, created, request, response)
values(@telegramUsername, getdate(), @request, @response)
select 0 Result, '' Msg
END
Другие модули
Получение данных юридического лица по БИК
Чистка данных в ФИО через dadata. Подключение к Dadata API. Коррекция ввода данных человека
Как упростить ввод адреса на сайте. Подсказки dadata по адресу
Проверка орфографии текста через API Яндекс Spell
Поиск компании через Dadata Подсказки. Получение информации о компании через API
Dadata. Вывод товаров и услуг (МКТУ)
Как отправить письмо с шаблоном HTML
Рерайт на сайте, подбор синонимов через API. Получение текста по API
Последние обновления
Форма 13.08.2024
Таблица 03.06.2024
Таблица 23.09.2023
15.09.2023
02.08.2023
Визуализация 02.08.2023
Визуализация 01.08.2023
Таблица 18.03.2023
Форма 19.12.2022
Таблица 06.12.2022
Форма 01.12.2022
Форма 21.11.2022
Форма 17.11.2022
Форма 10.11.2022
Таблица 16.09.2022
Разное 14.09.2022
Таблица 09.09.2022
Форма 31.07.2022
Страницы 31.07.2022
SQL-инструмент для создания личных кабинетов на сайте
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства