- adding new SentData Event in FormBase for User uploads (for Photo, Audio, Video, Contact, Location, Document)
- adding RequestUserLocation and RequestUserContact to Device class - Update to Device class - updating examples - adding example for data upload - small documentary Updates (Readme.md)
This commit is contained in:
parent
5cd54fc746
commit
b14fa2dc87
21
README.md
21
README.md
@ -55,7 +55,7 @@ It gives you features which will look/feel like WinForms or have a good way to c
|
|||||||
Within your empty App your need to put some initial lines including your APIKey to get things started.
|
Within your empty App your need to put some initial lines including your APIKey to get things started.
|
||||||
The "BotBase" Class will manage a lot of things for you, like system calls, action events and so on.
|
The "BotBase" Class will manage a lot of things for you, like system calls, action events and so on.
|
||||||
"StartForm" is your first Formular which every user will get internally redirected to, like a start page, you could redirect from there later in code, so users won't recognize it.
|
"StartForm" is your first Formular which every user will get internally redirected to, like a start page, you could redirect from there later in code, so users won't recognize it.
|
||||||
It needs to be a subclass of "FormBase" you will find in Namespace TelegramBotBase.Form.
|
It needs to be a subclass of "FormBase" you will find in Namespace TelegramBotBase.Base
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -83,35 +83,45 @@ public class StartForm : FormBase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Gets invoked during Navigation to this form
|
||||||
public override async Task Init(params object[] param)
|
public override async Task Init(params object[] param)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Gets invoked if the form gets opened (with Form.NavigateTo(NewForm))
|
||||||
public override async Task Opened()
|
public override async Task Opened()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Gets invoked if the form gets leaved
|
||||||
public override async Task Closed()
|
public override async Task Closed()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Gets invoked on every Message/Action/Data in this context
|
||||||
public override async Task Load(MessageResult message)
|
public override async Task Load(MessageResult message)
|
||||||
{
|
{
|
||||||
await this.Device.Send("Hello world!");
|
await this.Device.Send("Hello world!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Gets invoked on Button clicks
|
||||||
|
|
||||||
public override async Task Action(MessageResult message)
|
public override async Task Action(MessageResult message)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Gets invoked on Data uploades by the user (of type Photo, Audio, Video, Contact, Location, Document)
|
||||||
|
public override async Task SentData(DataResult data)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Gets invoked on every Message/Action/Data to render Design or Response
|
||||||
public override async Task Render(MessageResult message)
|
public override async Task Render(MessageResult message)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -626,7 +636,10 @@ await this.NavigateTo(ad);
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
PromptDialog pd = new PromptDialog("Please confirm", new ButtonBase("Ok", "ok"), new ButtonBase("Cancel", "cancel"));
|
PromptDialog pd = new PromptDialog("Please confirm");
|
||||||
|
|
||||||
|
pd.AddButton(new ButtonBase("Ok", "ok"));
|
||||||
|
pd.AddButton(new ButtonBase("Cancel", "cancel"));
|
||||||
|
|
||||||
var tf = new TestForm2();
|
var tf = new TestForm2();
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,7 @@
|
|||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Tests\ButtonTestForm.cs" />
|
<Compile Include="Tests\ButtonTestForm.cs" />
|
||||||
|
<Compile Include="Tests\DataForm.cs" />
|
||||||
<Compile Include="Tests\ProgressTest.cs" />
|
<Compile Include="Tests\ProgressTest.cs" />
|
||||||
<Compile Include="Tests\Register\PerForm.cs" />
|
<Compile Include="Tests\Register\PerForm.cs" />
|
||||||
<Compile Include="Tests\Register\PerStep.cs" />
|
<Compile Include="Tests\Register\PerStep.cs" />
|
||||||
|
|||||||
142
TelegramBaseTest/Tests/DataForm.cs
Normal file
142
TelegramBaseTest/Tests/DataForm.cs
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Telegram.Bot.Types;
|
||||||
|
using Telegram.Bot.Types.InputFiles;
|
||||||
|
using Telegram.Bot.Types.ReplyMarkups;
|
||||||
|
using TelegramBotBase.Base;
|
||||||
|
using TelegramBotBase.Form;
|
||||||
|
|
||||||
|
namespace TelegramBaseTest.Tests
|
||||||
|
{
|
||||||
|
public class DataForm : AutoCleanForm
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public override async Task SentData(DataResult data)
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
InputOnlineFile file;
|
||||||
|
|
||||||
|
switch (data.Type)
|
||||||
|
{
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.Contact:
|
||||||
|
|
||||||
|
tmp += "Firstname: " + data.Contact.FirstName + "\r\n";
|
||||||
|
tmp += "Lastname: " + data.Contact.LastName + "\r\n";
|
||||||
|
tmp += "Phonenumber: " + data.Contact.PhoneNumber + "\r\n";
|
||||||
|
tmp += "UserId: " + data.Contact.UserId + "\r\n";
|
||||||
|
|
||||||
|
await this.Device.Send("Your contact: \r\n" + tmp, replyTo: data.MessageId);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.Document:
|
||||||
|
|
||||||
|
file = new InputOnlineFile(data.Document.FileId);
|
||||||
|
|
||||||
|
await this.Device.SendDocument(file, "Your uploaded document");
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.Video:
|
||||||
|
|
||||||
|
file = new InputOnlineFile(data.Document.FileId);
|
||||||
|
|
||||||
|
await this.Device.SendDocument(file, "Your uploaded video");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.Audio:
|
||||||
|
|
||||||
|
file = new InputOnlineFile(data.Document.FileId);
|
||||||
|
|
||||||
|
await this.Device.SendDocument(file, "Your uploaded audio");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.Location:
|
||||||
|
|
||||||
|
tmp += "Lat: " + data.Location.Latitude + "\r\n";
|
||||||
|
tmp += "Lng: " + data.Location.Longitude + "\r\n";
|
||||||
|
|
||||||
|
await this.Device.Send("Your location: \r\n" + tmp, replyTo: data.MessageId);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.Photo:
|
||||||
|
|
||||||
|
InputOnlineFile photo = new InputOnlineFile(data.Photos.Last().FileId);
|
||||||
|
|
||||||
|
await this.Device.Send("Your image: ", replyTo: data.MessageId);
|
||||||
|
await this.Client.TelegramClient.SendPhotoAsync(this.Device.DeviceId, photo);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
await this.Device.Send("Unknown response");
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Action(MessageResult message)
|
||||||
|
{
|
||||||
|
await message.ConfirmAction();
|
||||||
|
|
||||||
|
if (message.Handled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (message.RawData)
|
||||||
|
{
|
||||||
|
case "contact":
|
||||||
|
|
||||||
|
await this.Device.RequestContact();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "location":
|
||||||
|
|
||||||
|
await this.Device.RequestLocation();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "back":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
var start = new Start();
|
||||||
|
|
||||||
|
await this.NavigateTo(start);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task Render(MessageResult message)
|
||||||
|
{
|
||||||
|
ButtonForm bf = new ButtonForm();
|
||||||
|
|
||||||
|
bf.AddButtonRow(new ButtonBase("Request User contact", "contact"));
|
||||||
|
|
||||||
|
bf.AddButtonRow(new ButtonBase("Request User location", "location"));
|
||||||
|
|
||||||
|
bf.AddButtonRow(new ButtonBase("Back", "back"));
|
||||||
|
|
||||||
|
InlineKeyboardMarkup ikv = bf;
|
||||||
|
|
||||||
|
await this.Device.Send("Please upload a contact, photo, video, audio, document or location.", bf);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -69,6 +69,16 @@ namespace TelegramBaseTest.Tests
|
|||||||
|
|
||||||
await this.NavigateTo(form2);
|
await this.NavigateTo(form2);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "data":
|
||||||
|
|
||||||
|
message.Handled = true;
|
||||||
|
|
||||||
|
var data = new DataForm();
|
||||||
|
|
||||||
|
await this.NavigateTo(data);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +98,8 @@ namespace TelegramBaseTest.Tests
|
|||||||
|
|
||||||
btn.AddButtonRow(new ButtonBase("#6 Form2 Command", new CallbackData("a", "form2").Serialize()));
|
btn.AddButtonRow(new ButtonBase("#6 Form2 Command", new CallbackData("a", "form2").Serialize()));
|
||||||
|
|
||||||
|
btn.AddButtonRow(new ButtonBase("#7 Data Handling", new CallbackData("a", "data").Serialize()));
|
||||||
|
|
||||||
await this.Device.Send("Choose your test:", btn);
|
await this.Device.Send("Choose your test:", btn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -60,7 +60,10 @@ namespace TelegramBaseTest.Tests
|
|||||||
}
|
}
|
||||||
else if (call.Value == "prompt")
|
else if (call.Value == "prompt")
|
||||||
{
|
{
|
||||||
PromptDialog pd = new PromptDialog("Please confirm", new ButtonBase("Ok", "ok"), new ButtonBase("Cancel", "cancel"));
|
PromptDialog pd = new PromptDialog("Please confirm");
|
||||||
|
|
||||||
|
pd.AddButton(new ButtonBase("Ok", "ok"));
|
||||||
|
pd.AddButton(new ButtonBase("Cancel", "cancel"));
|
||||||
|
|
||||||
var tf = new TestForm2();
|
var tf = new TestForm2();
|
||||||
|
|
||||||
|
|||||||
129
TelegramBotBase/Base/DataResult.cs
Normal file
129
TelegramBotBase/Base/DataResult.cs
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Telegram.Bot.Types;
|
||||||
|
using Telegram.Bot.Types.InputFiles;
|
||||||
|
|
||||||
|
namespace TelegramBotBase.Base
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a class to manage attachments within messages.
|
||||||
|
/// </summary>
|
||||||
|
public class DataResult : ResultBase
|
||||||
|
{
|
||||||
|
public Telegram.Bot.Args.MessageEventArgs RawMessageData { get; set; }
|
||||||
|
|
||||||
|
public Contact Contact
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.Message.Contact;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location Location
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.Message.Location;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Document Document
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.Message.Document;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Audio Audio
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.Message.Audio;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Video Video
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.Message.Video;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public PhotoSize[] Photos
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.Message.Photo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Telegram.Bot.Types.Enums.MessageType Type
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.RawMessageData?.Message?.Type ?? Telegram.Bot.Types.Enums.MessageType.Unknown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the FileId of the first reachable element.
|
||||||
|
/// </summary>
|
||||||
|
public String FileId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (this.Document?.FileId ??
|
||||||
|
this.Audio?.FileId ??
|
||||||
|
this.Video?.FileId ??
|
||||||
|
this.Photos.FirstOrDefault()?.FileId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public DataResult(Telegram.Bot.Args.MessageEventArgs rawdata)
|
||||||
|
{
|
||||||
|
this.RawMessageData = rawdata;
|
||||||
|
this.Message = rawdata.Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataResult(MessageResult message)
|
||||||
|
{
|
||||||
|
this.RawMessageData = message.RawMessageData;
|
||||||
|
this.Message = message.Message;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<InputOnlineFile> DownloadDocument()
|
||||||
|
{
|
||||||
|
var encryptedContent = new System.IO.MemoryStream(this.Document.FileSize);
|
||||||
|
var file = await this.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Document.FileId, encryptedContent);
|
||||||
|
|
||||||
|
return new InputOnlineFile(encryptedContent, this.Document.FileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<InputOnlineFile> DownloadVideo()
|
||||||
|
{
|
||||||
|
var encryptedContent = new System.IO.MemoryStream(this.Video.FileSize);
|
||||||
|
var file = await this.Client.TelegramClient.GetInfoAndDownloadFileAsync(this.Video.FileId, encryptedContent);
|
||||||
|
|
||||||
|
return new InputOnlineFile(encryptedContent, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<InputOnlineFile> DownloadPhoto(int index)
|
||||||
|
{
|
||||||
|
var photo = this.Photos[index];
|
||||||
|
var encryptedContent = new System.IO.MemoryStream(photo.FileSize);
|
||||||
|
var file = await this.Client.TelegramClient.GetInfoAndDownloadFileAsync(photo.FileId, encryptedContent);
|
||||||
|
|
||||||
|
return new InputOnlineFile(encryptedContent, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -86,6 +86,16 @@ namespace TelegramBotBase.Form
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets invoked if the user has sent some media (Photo, Audio, Video, Contact, Location, Document)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual async Task SentData(DataResult message)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets invoked at the end of the cycle to "Render" text, images, buttons, etc...
|
/// Gets invoked at the end of the cycle to "Render" text, images, buttons, etc...
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -267,6 +267,13 @@ namespace TelegramBotBase
|
|||||||
//Loading Event
|
//Loading Event
|
||||||
await activeForm.Load(e);
|
await activeForm.Load(e);
|
||||||
|
|
||||||
|
//Is Attachment ? (Photo, Audio, Video, Contact, Location, Document)
|
||||||
|
if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Contact | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Document | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Location |
|
||||||
|
e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Photo | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Video | e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Audio)
|
||||||
|
{
|
||||||
|
await activeForm.SentData(new DataResult(e));
|
||||||
|
}
|
||||||
|
|
||||||
//Render Event
|
//Render Event
|
||||||
if (!activeForm.FormSwitched)
|
if (!activeForm.FormSwitched)
|
||||||
await activeForm.Render(e);
|
await activeForm.Render(e);
|
||||||
|
|||||||
@ -38,6 +38,15 @@ namespace TelegramBotBase.Form
|
|||||||
this.Buttons = Buttons.ToList();
|
this.Buttons = Buttons.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds one Button
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="button"></param>
|
||||||
|
public void AddButton(ButtonBase button)
|
||||||
|
{
|
||||||
|
this.Buttons.Add(button);
|
||||||
|
}
|
||||||
|
|
||||||
public override async Task Action(MessageResult message)
|
public override async Task Action(MessageResult message)
|
||||||
{
|
{
|
||||||
var call = message.GetData<CallbackData>();
|
var call = message.GetData<CallbackData>();
|
||||||
|
|||||||
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||||
// übernehmen, indem Sie "*" eingeben:
|
// übernehmen, indem Sie "*" eingeben:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.3.1.3")]
|
[assembly: AssemblyVersion("1.4.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.3.1.3")]
|
[assembly: AssemblyFileVersion("1.4.0.0")]
|
||||||
|
|||||||
@ -114,6 +114,7 @@ namespace TelegramBotBase.Sessions
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var m = await this.Client.TelegramClient.EditMessageTextAsync(this.DeviceId, messageId, text, replyMarkup: markup);
|
var m = await this.Client.TelegramClient.EditMessageTextAsync(this.DeviceId, messageId, text, replyMarkup: markup);
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@ -149,6 +150,8 @@ namespace TelegramBotBase.Sessions
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
m = await (this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, text, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification));
|
m = await (this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, text, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification));
|
||||||
|
|
||||||
|
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
||||||
}
|
}
|
||||||
catch (ApiRequestException ex)
|
catch (ApiRequestException ex)
|
||||||
{
|
{
|
||||||
@ -159,9 +162,6 @@ namespace TelegramBotBase.Sessions
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,6 +183,8 @@ namespace TelegramBotBase.Sessions
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
m = await (this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, text, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification));
|
m = await (this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, text, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification));
|
||||||
|
|
||||||
|
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
||||||
}
|
}
|
||||||
catch (ApiRequestException ex)
|
catch (ApiRequestException ex)
|
||||||
{
|
{
|
||||||
@ -193,8 +195,6 @@ namespace TelegramBotBase.Sessions
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,6 +222,8 @@ namespace TelegramBotBase.Sessions
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
m = await this.Client.TelegramClient.SendPhotoAsync(this.DeviceId, file, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification);
|
m = await this.Client.TelegramClient.SendPhotoAsync(this.DeviceId, file, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification);
|
||||||
|
|
||||||
|
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
||||||
}
|
}
|
||||||
catch (ApiRequestException ex)
|
catch (ApiRequestException ex)
|
||||||
{
|
{
|
||||||
@ -232,8 +234,6 @@ namespace TelegramBotBase.Sessions
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,7 +318,7 @@ namespace TelegramBotBase.Sessions
|
|||||||
}
|
}
|
||||||
|
|
||||||
var m = await this.Client.TelegramClient.SendDocumentAsync(this.DeviceId, document, caption, replyMarkup: markup, disableNotification: disableNotification, replyToMessageId: replyTo);
|
var m = await this.Client.TelegramClient.SendDocumentAsync(this.DeviceId, document, caption, replyMarkup: markup, disableNotification: disableNotification, replyToMessageId: replyTo);
|
||||||
|
|
||||||
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
OnMessageSent(new MessageSentEventArgs(m.MessageId, m));
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
@ -339,11 +339,12 @@ namespace TelegramBotBase.Sessions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="buttonText"></param>
|
/// <param name="buttonText"></param>
|
||||||
/// <param name="requestMessage"></param>
|
/// <param name="requestMessage"></param>
|
||||||
|
/// <param name="OneTimeOnly"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<Message> RequestContact(String buttonText = "Send your contact", String requestMessage = "Give me your phone number!")
|
public async Task<Message> RequestContact(String buttonText = "Send your contact", String requestMessage = "Give me your phone number!", bool OneTimeOnly = true)
|
||||||
{
|
{
|
||||||
var rck = new ReplyKeyboardMarkup(KeyboardButton.WithRequestContact(buttonText));
|
var rck = new ReplyKeyboardMarkup(KeyboardButton.WithRequestContact(buttonText));
|
||||||
|
rck.OneTimeKeyboard = OneTimeOnly;
|
||||||
return await this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, requestMessage, replyMarkup: rck);
|
return await this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, requestMessage, replyMarkup: rck);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,11 +353,12 @@ namespace TelegramBotBase.Sessions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="buttonText"></param>
|
/// <param name="buttonText"></param>
|
||||||
/// <param name="requestMessage"></param>
|
/// <param name="requestMessage"></param>
|
||||||
|
/// <param name="OneTimeOnly"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<Message> RequestLocation(String buttonText = "Send your location", String requestMessage = "Give me your location!")
|
public async Task<Message> RequestLocation(String buttonText = "Send your location", String requestMessage = "Give me your location!", bool OneTimeOnly = true)
|
||||||
{
|
{
|
||||||
var rcl = new ReplyKeyboardMarkup(KeyboardButton.WithRequestLocation(buttonText));
|
var rcl = new ReplyKeyboardMarkup(KeyboardButton.WithRequestLocation(buttonText));
|
||||||
|
rcl.OneTimeKeyboard = OneTimeOnly;
|
||||||
return await this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, requestMessage, replyMarkup: rcl);
|
return await this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, requestMessage, replyMarkup: rcl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,6 +51,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Base\ButtonClickedEventArgs.cs" />
|
<Compile Include="Base\ButtonClickedEventArgs.cs" />
|
||||||
<Compile Include="Base\ControlBase.cs" />
|
<Compile Include="Base\ControlBase.cs" />
|
||||||
|
<Compile Include="Base\DataResult.cs" />
|
||||||
<Compile Include="Base\MessageClient.cs" />
|
<Compile Include="Base\MessageClient.cs" />
|
||||||
<Compile Include="Base\MessageIncomeResult.cs" />
|
<Compile Include="Base\MessageIncomeResult.cs" />
|
||||||
<Compile Include="Base\MessageResult.cs" />
|
<Compile Include="Base\MessageResult.cs" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user