Zireael |
Отправлено: 24 Октября, 2019 - 02:51:03
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Создать сообщество, создать ключ api и можно отправлять сообщения, например о состоянии бота. На видео показаны все нужные действия: https://www.youtube.com/watch?v=...feature=youtu.be
Отправка сообщения в vk (Отобразить)CODE:#define CP_ACP 0
#define CP_UTF8 65001
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll");
external(INT, "wsprintf", "wsprintfA", "User32.dll" );
string api_key = ""; // ключ API, вставить нужный
string group_id = ""; // ID группы, вставить нужный
string user_id = ""; // ID пользователя, вставить нужный
// вызов функции для отправки сообщения
vk_message(api_key, group_id, user_id, "Текст сообщения"); // передаем ключ API, ID группы, ID пользователя, текст сообщения
function vk_message(string api_key, string group_id, string user_id, string text)
{
string s;
new char c[size(text)*2];
new char c1[size(text)*2];
MultiByteToWideChar(CP_ACP, 0, text, size(text), address(#c[0]), sizearray(c));
int count_symbol=WideCharToMultiByte(CP_UTF8, 0, address(#c[0]), sizearray(c)/2, address(#c1[0]), sizearray(c1), 0, 0);
char a[2]; text="";
for(int i=0; i<count_symbol; i++)
{
wsprintf(address(#a[0]), "%02x", formatci(c1[i]));
text=text+"%"+format(#a[0]);
}
delete c; delete c1;
string random=format(rand(1, 10));
for(i=0; i<9; i++)random=random+format(rand(0, 10));
sendgetweb(#s, "Bot", "POST", "https:/"+"/api.vk.com", "method/messages.send"+
"?user_id="+user_id+
"&group_id="+group_id+
"&random_id="+random+
"&message="+text+
"&access_token="+api_key+
"&v=5.102");
//messagebox(s); // ответ от сервера
sleep(50);
}
Ограничение 20 сообщений в секунду, поэтому в конце функции пауза 50мсек. |
|
|
Dantes3000 |
Отправлено: 24 Октября, 2019 - 10:02:23
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
007wan , в вк есть такие же боты, как в телеграме. Через сообщества управлять ботом тупо.
Вот пример как отправить боту в телеграме сообщение:
CODE:
string token="8688498960F_YXNQWILE"; //токен бота (сейчас неправильный)
string message="Hello world"; // сообщение
string chat_id="734297035"; //чат айди, описание ниже
string s;
sendgetweb(#s, "Bot", "POST", "https:/"+"/api.telegram.org",
"bot"+token+"/"+
"sendMessage?chat_id="+chat_id+"&"+
"text="+message);
messagebox(s);
Создаём бота (инструкций полно в интернете)
Отсылаем ему любое сообщение кроме /start
Пересылаем это сообщение боту @ShowJsonBot
В ответном джисон файле пункт "from": { "id": 731292035, показывает наш chat_id
Управлять ботом можно легко, если знать как но так практически всегда |
|
|
Zireael |
Отправлено: 24 Октября, 2019 - 15:28:16
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: 1) можно ли через это отправлять команды боту(запустить/остановить)?
Примерно так:
Получить последнее сообщение (Отобразить)CODE:#define CP_ACP 0
#define CP_UTF8 65001
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll");
string api_key = ""; // ключ API, вставить нужный
string group_id = ""; // ID группы, вставить нужный
string user_id = ""; // ID пользователя, вставить нужный
string t=vk_get_last_message(api_key, group_id, user_id);
messagebox(t);
function vk_get_last_message(string api_key, string group_id, string user_id)
{
string s, count;
sendgetweb(#s, "Bot", "GET", "https:/"+"/api.vk.com", "method/messages.getHistory"+
"?user_id="+user_id+
"&group_id="+group_id+
"&offset=0"+
"&count=1"+
"&access_token="+api_key+
"&v=5.102");
//messagebox(s); // ответ от сервера
if(regexsearch(1, #s, s, "(?<=text.:.)[^\"+formatic(34)+"]+", SINGLELINE)>0) // поиск текста
{
int size_s=size(s);
new char c1[size_s+2]; strcpy(#c1[0], s);
int count_symbol=MultiByteToWideChar(CP_UTF8, 0, address(#c1[0]), size_s, -1, 0); // узнать количество символов включая null
new char c2[count_symbol*2];
count_symbol=MultiByteToWideChar(CP_UTF8, 0, address(#c1[0]), size_s, address(#c2[0]), sizearray(c2)); // из utf-8 в utf-16
delete c1;
if(count_symbol>0)
{
new char c1[count_symbol+1];
count_symbol=WideCharToMultiByte(CP_ACP, 0, address(#c2[0]), count_symbol, address(#c1[0]), sizearray(c1), 0, 0); // из utf-16 в ascii
if(count_symbol>0)s=format(#c1[0], count_symbol);
delete c1;
}
delete c2;
}
return s;
} |
|
|
007wan |
Отправлено: 24 Октября, 2019 - 17:20:43
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Я вообще мечтаю о такой системе, но врядли ее изобрели, а точнее изобрели "Создание номеров мобильных", что бы потом использовать в каких-то программах.
Мечта такая:
Создается мобильный номер телефона. Можно отправлять через телефон на этот номер всякие команды, а в компьютере это прочитается и выполнится нужный код, а если, например, бот остановился по какой-то причине, то вышлется на ВАШ мобильный телефон сообщение об остановке бота по какой-то причине С номера телефона, КОТОРЫЙ был создан.
Можно такой код, раз уж уже ПО ВК можно Вин Апи:
Суть таккая:
Стоит таймер, который при запуске читает все последние сообщения, если в этом сообщении, например, "Бот-->Запустить", то выполняет нужный код в Киборе(В данном случае будет дистанционно запускать бот, при отправке команды с ВК).
Если будет команда "Бот-->Остановить", то думаю понятно что с этим будет.
Так же будет высылаться статус(Потом допилю скрипт и выложу сюда задумку).
Вопрос: Как твой скрипт работает? В том смысле, что 20 сообщний одновременно от каждого пользователю нельзя отпарвлять? А что если отправит? Может есть какая-то функция, которая возвращает статус отправленного СМС по вин апи? А то я хочу "Если не удано отправилась, то подождать и снова отсправить"
(Добавление)
Dantes3000 пишет: 007wan , в вк есть такие же боты, как в телеграме. Через сообщества управлять ботом тупо.
Вот пример как отправить боту в телеграме сообщение:
CODE:
string token="8688498960F_YXNQWILE"; //токен бота (сейчас неправильный)
string message="Hello world"; // сообщение
string chat_id="734297035"; //чат айди, описание ниже
string s;
sendgetweb(#s, "Bot", "POST", "https:/"+"/api.telegram.org",
"bot"+token+"/"+
"sendMessage?chat_id="+chat_id+"&"+
"text="+message);
messagebox(s);
Создаём бота (инструкций полно в интернете)
Отсылаем ему любое сообщение кроме /start
Пересылаем это сообщение боту @ShowJsonBot
В ответном джисон файле пункт "from": { "id": 731292035, показывает наш chat_id
Управлять ботом можно легко, если знать как ::look:: но так практически всегда Ой, прочитал это в самый последний раз, когда уже отправил выше) Окей, я не сижу в телеграме, может просвятите что это за такая и как там пользоваться вин апи? А ппароль потребует?
(Добавление)
Я ИМЕЮ ВВИДУ УППАВЛЯТО БОТОМ, КОТОРЫЙ НАПИСАННЫЙ В КИБОРЕ, А НЕ БОТРМ В ТЕЛЕГРАММЕ(СОРРИ ЗА КАПС, ЛЕНЬ СТИРАТТ, ПИШУ С ТЕЛЕФОНА) |
|
|
007wan |
Отправлено: 25 Октября, 2019 - 18:21:56
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Так я не прошу гайд, мне хотя бы ссылочку на такой бот, в которого можно отправить любой текс и получить последний текст бота или весь.
(Добавление)
Какой смысл создавать бота для рассылки не нужного кала другим подписчикам канала? Мне нужно, и я думаю, что можно использовать бота только для отправки ему дистанционного текста как в коробку и бот будет на этот текст отвечать, а я - читать текст, который он мне ответил, так можно?
Например, зашел по токену и номеру группы(канала) через sendgetweb , выслав текст "проверка соединения", боту пришел этот шаблонный , на него он отвечает только "Ок" или если setgetweb был не удачный, то ошибка соединения, но если он написал "Ок" и setgetweb был удачный, то читать через setgetweb его ответ (бота), потом можно с ним общаться:
Например, запустить бот, если не нашел какую либо картинку, то остановииь бот Кибора и выслать боту телеграмм, "бот остановлен: картинка 1 не найдена", бот уже ничего не отвечает и мы ничего не читаем.
Если потребуется дистанционно запустить бот Кибора: в телеграмме пишем: "запустить бот Кибор", в Киборе будет стоять таймер, который будет ожидать эту фразу и запускать бот Кибора.
(Добавление)
Пожалуйста, ппосвятите, я лревний |
|
|
|