[Telegram] Core

ToxicAvenger

Участник
Сообщения
7
Реакции
1
Эта библиотека не отправляет (или делает это не правильно) сообщение в канал, если указывать айди канала в виде числа, например -10044445432 в таком. Если указывать айдишник пользователя в таком виде: 32834828, то всё ок. Если текстовый айдишник пользователя или канала указывать через собаку, то тоже ок, например так: @test_channel_name @test_username.
Проблема в том, что у приватных каналов нет текстового айди, только цифровой, типа -100...
Есть идеи как можно поправить код библиотеки для корректной работы с каналами?
Или быть может я что-то не правильно делаю?
 
Последнее редактирование:

ToxicAvenger

Участник
Сообщения
7
Реакции
1
В конфиг прописываю айдишник канала:
C-подобный:
"Telegram"
{
        "Settings"
        {
                "token"                 "token"
                "chatId"                "-1001593289322"
        }
}

В Telegram_Core.sp добавил строку:
C-подобный:
public void OnPluginStart()                                                                                                                                                                                                                                                                                                                                             
{                                                                                                                                                                                                                                                                                                                                                                       
        BuildPath(Path_SM, szPath, sizeof(szPath), "configs/TelegramCore.cfg");                                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                        
        char szApiKey[256], szApiUrl[256];                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                        
        KeyValues kv = new KeyValues("Telegram");                                                                                                                                                                                                                                                                                                                       
        if(!kv.ImportFromFile(szPath) || !kv.GotoFirstSubKey())                                                                                                                                                                                                                                                                                                         
                SetFailState("[Telegram] file is not found (%s)", szPath);                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                        
        kv.Rewind();                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                        
        if(kv.JumpToKey("Settings"))                                                                                                                                                                                                                                                                                                                                   
        {                                                                                                                                                                                                                                                                                                                                                               
                kv.GetString("token", szApiKey, sizeof(szApiKey));                                                                                                                                                                                                                                                                                                     
                kv.GetString("chatId", szChatId, sizeof(szChatId));                                                                                                                                                                                                                                                                                                     
        } 
                                                                                                                                                                                                                                                                                                                                                                        
        PrintToServer("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CHAT_ID: %s", szChatId);                                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                                                        
        FormatEx(szApiUrl, sizeof(szApiUrl), "https://api.telegram.org/bot%s", szApiKey);                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                        
        httpClient = new HTTPClient(szApiUrl);                                                                                                                                                                                                                                                                                                                         
}

В лог выводится вот такая строка:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CHAT_ID: -2147483648
Сообщения автоматически склеены:

Разобрался. Оказывается, проблема древняя. Первая ссылка из гугла выдаёт вот это: alliedmodders,sourcemod
Для себя решил так:
конфиг:
"Telegram"
{
        "Settings"
        {
                "token"                 "token"
                "chatId"                "1593289322"
        }
}
Плагин:
public void OnPluginStart()
{
        //...
        if(kv.JumpToKey("Settings"))
        {
                kv.GetString("token", szApiKey, sizeof(szApiKey));
                kv.GetString("chatId", szChatId, sizeof(szChatId));
        }

        Format(szChatId, sizeof(szChatId), "-100%s", szChatId);
        //...
}
 
Последнее редактирование:

xyligan

Паркетный пол трещит под моей крышкой черепной
Сообщения
900
Реакции
432
Версия библиотеки с расширенным буфером (до 4096) для метода Telegram_SendMessage
 

Вложения

  • Telegram_Core.smx
    4.5 КБ · Просмотры: 44

trekken

Участник
Сообщения
497
Реакции
182
Можно ли как-то сделать модуль что бы он писал сообщение в тг от отдельного плагина?
 

Ackerman

Участник
Сообщения
191
Реакции
15
@tsementox, пригласить бота к себе в чат, взять его ключ и вставить в эту ссылку и после перейти по ней
C-подобный:
https://api.telegram.org/bot<token>/getUpdates
пример: https://api.telegram.org/bot12456748:asdas54156asd/getUpdates

по ссылке будет примерно такое (но вперемешку) нужно будет найти имя чата и его id.
Вот такое выбивает: {"ok":true,"result":[]}
 

selajuf

Участник
Сообщения
41
Реакции
9
Помогите id chat найти
Добавляешь Бота @getmyid_bot в канал/чат/лс и он отправляет тебе Chat Id
1660193396907.png

Сообщения автоматически склеены:

Вот такое выбивает: {"ok":true,"result":[]}
Токен вставил между этих строк? https://api.telegram.org/botтут/getUpdates
В лс ему написал или в канал/чат добавил и отправил сообщение?
 

Ackerman

Участник
Сообщения
191
Реакции
15
Добавляешь Бота @getmyid_bot в канал/чат/лс и он отправляет тебе Chat Id Посмотреть вложение 101027
Сообщения автоматически склеены:


Токен вставил между этих строк? https://api.telegram.org/botтут/getUpdates
В лс ему написал или в канал/чат добавил и отправил сообщение?
В лс боту писал /start, в чат добавил, токен вставлял и все равно {"ok":true,"result":[]}
 

Ackerman

Участник
Сообщения
191
Реакции
15
В лс можешь дать токен что бы я проверил?
Я создал бота сначала, и ссылка заработала, там очень много команд, взял эти данные: "chat":{"id":-1001536854379
Вписал:
"Telegram"
{
"Settings"
{
"token" "cut"
"chatId" "-1001536854379"
}
}

И ничего в чат не выводит, в консоле ошибок нет
 

selajuf

Участник
Сообщения
41
Реакции
9
Я создал бота сначала, и ссылка заработала, там очень много команд, взял эти данные: "chat":{"id":-1001536854379
Вписал:
"Telegram"
{
"Settings"
{
"token" "cut"
"chatId" "-1001536854379"
}
}

И ничего в чат не выводит, в консоле ошибок нет
Эта библиотека не может отправлять сообщения в приватные каналы/чаты, вот он и не видит приватный канал.

Используй открытый чат/канал.
 

Ackerman

Участник
Сообщения
191
Реакции
15
У меня и есть тип группы публичная
Сообщения автоматически склеены:

Эта библиотека не может отправлять сообщения в приватные каналы/чаты, вот он и не видит приватный канал.

Используй открытый чат/канал
У меня и есть открытый чат
 

___R4ne

Участник
Сообщения
37
Реакции
0
Добрый день, кто может подсказать, как в SendPhoto добавить caption? У меня либо ошибка вылетает, либо тект не выводится, ток фотка прилетет. Пытаюсь сделать DropSummoner в тг.
Сообщения автоматически склеены:

C-подобный:
    char sCase[512];
    char sBuffer[1024];
    g_hKvConfig.Rewind();
    if(g_hKvConfig.JumpToKey(sDefIndex))
    {
        d++;
        g_hKvConfig.GetString("image_url", sCase, sizeof(sCase));
        g_hKvConfig.GetString("case_name", sBuffer, sizeof(sBuffer));
        char sText[512], sLink[256], sAuth[32];
        if(IsClientInGame(client))    GetClientAuthId(client, AuthId_SteamID64, sAuth, sizeof(sAuth));
        FormatEx(sLink, sizeof(sLink), "https://steamcommunity.com/profiles/%s/", sAuth);
        FormatEx(sText, sizeof(sText), "<b>Case №%d</b>\n<b>Игроку:</b> %s\n<b>Выпал:</b> %s\n<b>Цена:</b> %s\n<b>Профиль: </b>\n<code>%s</code>", d, szPlayerName, sBuffer, sPrice, sLink);
        if(Debug) LogToFile(g_sLogFile, "Сообщение построено");
        Telegram_SendMessage(sText, "HTML");
        Telegram_SendPhoto(sCase);
        if(Debug) LogToFile(g_sLogFile, "Сообщение отправлено");
    }
 
Последнее редактирование:

___R4ne

Участник
Сообщения
37
Реакции
0
Всем доброго дня, никто не знает как нужно менять ядро чтобы довать следующую функцию
disable_web_page_preview
не могу понять как это сделать, в инклаунд прописал, в sp тоже, но отправляет всё равно с предпросмотром ссылки, помогите пожалуйста.
 

vchepurnov

Участник
Сообщения
2
Реакции
0
Выводит сообщения из чата сервера в чат тг
  • sm_tg - можно заменить на команду которая вам нужна
C-подобный:
#include <sourcemod>
#include <telegram>
#include <ripext>

public void OnPluginStart()
{
    RegConsoleCmd("sm_tg", OnClientUseChat, "Посылает сообщение в Telegram");
}

public Action OnClientUseChat(int iClient, int iArgCount)
{
    if (!iClient || !IsClientInGame(iClient))
        return Plugin_Continue;

    char szMessage[256], szText[256];
    GetCmdArgString(szMessage, sizeof(szMessage));

    FormatEx(szText, sizeof(szText), "Игрок *%N*, пишет: *%s*", iClient, szMessage);
    Telegram_SendMessage(szText, "markdown");
   
    return Plugin_Continue;
}
А сообщения с телеги в кс реально сделать?
К примеру, чтоб в чате набрать !tc к примеру, и выводились сообщения и с контры и с тг.
 

Вложения

  • TelegramAdminsHelp.smx
    3 КБ · Просмотры: 12

XBITID

Участник
Сообщения
20
Реакции
2
Выводит сообщения из чата сервера в чат тг
  • sm_tg - можно заменить на команду которая вам нужна
C-подобный:
#include <sourcemod>
#include <telegram>
#include <ripext>

public void OnPluginStart()
{
    RegConsoleCmd("sm_tg", OnClientUseChat, "Посылает сообщение в Telegram");
}

public Action OnClientUseChat(int iClient, int iArgCount)
{
    if (!iClient || !IsClientInGame(iClient))
        return Plugin_Continue;

    char szMessage[256], szText[256];
    GetCmdArgString(szMessage, sizeof(szMessage));

    FormatEx(szText, sizeof(szText), "Игрок *%N*, пишет: *%s*", iClient, szMessage);
    Telegram_SendMessage(szText, "markdown");
  
    return Plugin_Continue;
}
Я так понимаю, это чтобы сообщения с сервера в чат телеги приходили. Эта библтотека вообще поддерживает обратную связь, с чата тг, в чат сервера?
 

Похожие темы

Ответы
15
Просмотры
Сверху Снизу