Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Используя Channel Name получается отправить только в публичный канал.
А себе в личку не выходит (Error: Bad Request). Получается только по Channel ID. Это так и должно работать, или я не так что то делаю?
У меня работает, в канале там имя канала и идентификатор, а типа себе, вернее своему боту только идентификатор. Себе или кому либо в личку вроде не описано как.
Валерий, читайте внимательнее мой пост.
Я не пишу, что НЕ отправляется в личку. Я пишу, что НЕ отправляется в личку по имени!
Валерий, читайте внимательнее мой пост.
Я не пишу, что НЕ отправляется в личку. Я пишу, что НЕ отправляется в личку по имени!
Да, не до понял, не знаю, боту тоже по имени не отправляется, только по идентификатору. А себе как оформляете отправление? Вернее как получаете id свой в телеге? У меня только в бот получается.
Дефайны на ум приходят только или АПИ телеги ковырять.
Да, не до понял, не знаю, боту тоже по имени не отправляется, только по идентификатору. А себе как оформляете отправление? Вернее как получаете id свой в телеге? У меня только в бот получается.
Дефайны на ум приходят только или АПИ телеги ковырять.
Идеология ботов такая, что бот не может сам начинать беседу, а значит и не может вам что то писать.
Бот в личке может только отвечать...
Да, не до понял, не знаю, боту тоже по имени не отправляется, только по идентификатору. А себе как оформляете отправление? Вернее как получаете id свой в телеге? У меня только в бот получается.
Любой ID получаю через бота Get My ID
Любой ID получаю через бота Get My ID
Да, перепутал свой id и бота. Мы же себе в личку шлем от своего бота)))
Из статьи Андрея
Стоит отметить, что в этих примерах в качестве получателя сообщения мы передаем номер чата chat_id. Мы не можем знать его заранее, чтобы отослать сообщение пользователю, пока он первым не начнет общение с ботом. Обратиться к пользователю по его номеру мобильного телефона или @username также нет возможности. Это сделано, очевидно, в целях безопасности, чтобы боты не рассылали спам. А вот публиковать сообщения на канале боты могут, обращаясь по его имени используя второй вариант SendMessage.
У меня на прошлой неделе возник какой-то глюк - перестал работать функция считывания очереди сообщений из Телеграмма. Т.е. исходящие сообщения отправляются как и раньше, как текст, так и скрин7-шоты,ю а вот функция GetUpdates() ничего не возвращает, писок чатов всегда пуст.
Кто-нибудь сталкивался с таким глюком? В чем может быть причина?
Здравствуйте!
Все теги описаны в доках на API Telegram.
Здравствуйте!
Например для жирного шрифта надо включить HTML отправку в Telegram.mqh
И потом отправить текст в теге <b>
Роман, если вам бот нужен только для отправки скриншотов, то можно сделать так:
1. Узнайте у бота @MyTelegramID_bot номер вашего чата.
2. Напишите простого бота который будет проверять наличие новых позиций и отправлять картинки в чат с указанным ID. Пример такой:
//+------------------------------------------------------------------+
//| Input parameters |
//+------------------------------------------------------------------+
input ENUM_LANGUAGES InpLanguage=LANGUAGE_EN;//Language
input string InpToken="";//Token
input long ChatId=0; //Chat ID
//---
CCustomBot bot;
int pos_count;
//+------------------------------------------------------------------+
int OnInit()
{
bot.Token(InpToken);
int res=bot.GetMe();
if(res!=0)
{
Print(GetErrorDescription(res));
}
pos_count=PositionCount(_Symbol);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTick()
{
int pos_count_new=PositionCount(_Symbol);
if(pos_count_new>pos_count)
{
pos_count=pos_count_new;
int result=SendScreenShot(ChatId,_Symbol,0,NULL);
if(result!=0)
Print(GetErrorDescription(result,InpLanguage));
}
}
//+------------------------------------------------------------------+
int PositionCount(const string _symbol)
{
int count=0;
int orders_total=OrdersTotal();
for(int i=0; i<orders_total; i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
PrintError(ERR_ORDER_SELECT);
return(-1);
}
//---
if(_symbol==NULL || OrderSymbol()==_symbol)
count++;
}
//---
return(count);
}
//+------------------------------------------------------------------+
int SendScreenShot(const long _chat_id,
const string _symbol,
const ENUM_TIMEFRAMES _period,
const string _template=NULL)
{
int result=0;
long chart_id=ChartOpen(_symbol,_period);
if(chart_id==0)
return(ERR_CHART_NOT_FOUND);
ChartSetInteger(ChartID(),CHART_BRING_TO_TOP,true);
//--- updates chart
int wait=60;
while(--wait>0)
{
if(SeriesInfoInteger(_symbol,_period,SERIES_SYNCHRONIZED))
break;
Sleep(500);
}
if(_template!=NULL)
if(!ChartApplyTemplate(chart_id,_template))
PrintError(_LastError,InpLanguage);
ChartRedraw(chart_id);
Sleep(500);
ChartSetInteger(chart_id,CHART_SHOW_GRID,false);
ChartSetInteger(chart_id,CHART_SHOW_PERIOD_SEP,false);
string filename=StringFormat("%s%d.gif",_symbol,_period);
if(FileIsExist(filename))
FileDelete(filename);
ChartRedraw(chart_id);
Sleep(100);
// if(ChartScreenShot(chart_id,filename,800,600,ALIGN_RIGHT))
if(ChartScreenShot(chart_id,filename,1024,768,ALIGN_RIGHT))
{
Sleep(100);
bot.SendChatAction(_chat_id,ACTION_UPLOAD_PHOTO);
//--- waitng 30 sec for save screenshot
wait=60;
while(!FileIsExist(filename) && --wait>0)
Sleep(500);
//---
string screen_id;
result=bot.SendPhoto(_chat_id,filename,screen_id,_symbol+"_"+StringSubstr(EnumToString(_period),7));
}
ChartClose(chart_id);
return(result);
}
//+------------------------------------------------------------------+