Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Погружайтесь в загадочный мир подводных приключений с игрой

Тайна морей - Затерянные сокровища: Три в ряд

Три в ряд, Казуальные, Головоломки

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Utf-8

7 постов сначала свежее
11
ChepchikStalina
2 года назад

Кто сказал 10000010001100010000111000011110110000110100?⁠⁠

1000011111110000111011100010011101000100000110000111110100010001001000001000011001010000111110100000100010000011000011101110000110000100001100101000100001110000010001000000100001111101000011000110000111110100010000101000011111010001000100

Бунт Робототехника Utf-8 Текст
0
2
Philipesko
Philipesko
3 года назад

Windows 11 Dev version хочет мне что то сказать⁠⁠

Windows 11 Dev version хочет мне что то сказать Windows 11, Обновление, Utf-8, Страх
Показать полностью 1
[моё] Windows 11 Обновление Utf-8 Страх
15
249
quickwin.ru
quickwin.ru
4 года назад
MS, Libreoffice & Google docs

КАК НАПИСАТЬ TELEGRAM BOT НА VBA?⁠⁠

ПРЕДЫСТОРИЯ

У моего заказчика случился один инцидент. Ну, как инцидент, обычная житейская история. У него в компании есть девушка (или женщина, все относительно), которая следит за днями рождений сотрудников, собирает деньги на подарок и т.д., короче, Шура – профсоюзная активистка из «Служебного романа» (помните?: «… если сегодня кто-нибудь еще родится или умрет, я останусь без обеда…»), только помоложе и без профсоюза.

И вот однажды подходит эта «Шура» к одному из сотрудников и просит его помочь ей поднять на этаж пиццу.

- Какую пиццу?

- У меня сегодня День рождения, я заказала на всех пиццу…

- (Ой-йо-мойо(!!???)) ну… это… я тебя поздравляю, пошли за пиццей… Коллеги! у «Шуры» сегодня День рождения!

Тут, конечно, началось… в спешке, пока «Шура» и «Шурик» исчезли в направлении пиццы, торопливые сборы ассигнаций, в ближайший цветочный ларёк направлялся гонец, и воздухе витала мысль: «Просрали полимеры день рождения девушки, которая о каждом из нас не забывала»…

Дабы не попадать в следующий раз впросак, заказчик попросил меня написать для их корпоративного Telegram чата некую программку, которая бы утром поздравляла тех, у кого день рождения (в компании около 200 человек), а за три дня до дня рождения персонально направляла каждому сотруднику группы/отдела, в котором работает будущий именинник, telegram-сообщение о грядущем событии.

«Деньги в руки – будут звуки». Что в результате получилось? Есть чат, в котором сотрудники обсуждают разные вопросы, в нем каждое утро в 9-00 появляется средних размеров сообщение на тему «10 знаменитых людей, родившихся в этот день». Если в «этот день» родился кто-то из компании заказчика, то этот кто-то оказывается в компании знаменитостей. Такой вот каламбур. Также индивидуально некоторые сотрудники получают сообщение от бота «Шура – профсоюзная активистка» о ДР за три дня до «грустного праздника».

Вот, такая преамбула.

Для реализации поставленной задачи я использовал API Telegram, c# и серверную инфраструктуру заказчика на платформе Microsoft.

ШАГ ЗА ШАГОМ

После создания заказной разработки на c# и .Net мне пришла в голову мысль: а можно ли запилить Telegram бот на VBA? На странице «Bot Code Examples» VBA среди множества языков нет, но ведь это не означает, что на нем нельзя написать бот для «телеги».

Попробую в этом посте заполнить "брешь". Сначала нужно сделать то, что делается для любого языка программирования – создать и прописать бота.


1) Для создания бота в Telegram найдите крестного отца всех telegram ботов - BotFather и дайте ему команду: «/newbot». В ответ отец всех telegram ботов попросит дать имя новому боту. Далее, нужно указать логин бота (username), заканчивающееся на bot. Вот бот готов. В доказательство свершившегося BotFather выдаст access token для доступа в Telegram API приблизительно такого вида: «1234567890:ABCDEFGabcdfgQWERTYUIOPasdfghjklZXC».

2) Нужно новорожденного бота пригласить в свою группу.

3) Все, бот может отправлять сообщения в эту группу.


Общая часть закончена. Теперь специфика Visual Basic for Application.

Попробуем отправить сообщение на VBA. Заранее прошу прощения за лубочный вид кодов. Как с помощью тега типа <VBA… раскрасить код на пикабу, мне неведомо, если такая возможность есть или недавно появилась – дайте знать. Если вы не хотите перебивать код с картинки, а хотите его просто скопировать, это можно сделать на странице моего сайта: https://www.quickwin.ru/Solutions/QandA :

КАК НАПИСАТЬ TELEGRAM BOT НА VBA? Vba, Telegram, Telegram бот, Visual basic, Utf-8, Бот, Длиннопост

Конкретно этот код работает. Проблема возникнет, если вы попытаетесь отправить сообщение на русском языке. В этом случае от Telegram вы получите ответ: «Bad Request: strings must be encoded in UTF-8».

У VBA, к сожалению, нет встроенной функции перевода в требуемый формат (UTF-8). "Что же делать? Что же делать? Надо выпить".

Можно придумать свой собственный велосипед на тему: «URL Encoding», в соответствии с RFC-3986, можно найти на просторах интернета множество чужих велосипедов разной степени глючности и «доработать напильником», но я бы предложил велосипед не изобретать, а воспользоваться функцией JavaScript encodeURIComponent(), она заменяет «неправильные» символы процентными (escape-) последовательностями, представляющими кодировку символа UTF-8.

КАК НАПИСАТЬ TELEGRAM BOT НА VBA? Vba, Telegram, Telegram бот, Visual basic, Utf-8, Бот, Длиннопост

Это окошко в возможности JavaScript меня уже неоднократно выручало.

Соответственно, функция SendAMessage2TheTelegram будет выглядеть так:

КАК НАПИСАТЬ TELEGRAM BOT НА VBA? Vba, Telegram, Telegram бот, Visual basic, Utf-8, Бот, Длиннопост

Теперь сообщения с русскими буквами прекрасно перевариваются Telegram API. Отдельный вопрос: как узнать id чата, если речь идет о группе или даже конкретной персоне, а не о канале?

Для этого нужно отправить какое-либо сообщение боту из чата, в который вы планируете отправлять сообщения бота.

Например, такое: «/myid @UserNameOfMybot».

После чего посмотреть на историю сообщений бота с помощью команды, которую можно отправить из, например, Google Chrome:

https://api.telegram.org/bot1234567890:AAAAAAAAAAAAAAAAAAAAA...

Посмотреть на последние строчки истории и найти собственное сообщение в структуре JSON. Там должен быть и такой фрагмент: "chat":{"id": 123456789. 123456789- на месте этих цифр должен быть ID чата для переменной ChatID.

Изначально я думал создать на c# com компонент для VBA, с большим набором функций по работе с Telegram. Но нужен ли такой com-компонент? – я пока не решил. Так что этот вопрос тоже можно обсудить.

Показать полностью 3
[моё] Vba Telegram Telegram бот Visual basic Utf-8 Бот Длиннопост
52
1410
Boy4ik
Boy4ik
9 лет назад

Кодировка⁠⁠

Кодировка
Кодировка Utf-8 Альфа-Банк
39
3045
Lemis
Lemis
9 лет назад

Кодирование⁠⁠

#comment_58102779

Кодирование Комментарии на Пикабу, Кодировка, Utf-8
Комментарии на Пикабу Кодировка Utf-8
55
yalanne
yalanne
10 лет назад

Нововведение.⁠⁠

('-') А спецсимволы отображаются в посте? ( _). Или я выгляжу наркоманом) (`) .
Нововведение Обновление на Пикабу Utf-8 Текст
2
adnn1n
10 лет назад

В связи с обновлением⁠⁠

Пост сломан, держите в комментах
Utf-8 Обновление на Пикабу Смайл Метание мебели Текст Длиннопост
8
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии