- Added easy to use Proxy functionality into constructor
- improved DeviceSession - added IsGroup property to DeviceSession
This commit is contained in:
parent
3856271e30
commit
bbf90deccc
@ -2,6 +2,8 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -32,6 +34,43 @@ namespace TelegramBotBase.Base
|
|||||||
Prepare();
|
Prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MessageClient(String APIKey, HttpClient proxy)
|
||||||
|
{
|
||||||
|
this.APIKey = APIKey;
|
||||||
|
this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey, proxy);
|
||||||
|
|
||||||
|
|
||||||
|
Prepare();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageClient(String APIKey, Uri proxyUrl)
|
||||||
|
{
|
||||||
|
this.APIKey = APIKey;
|
||||||
|
|
||||||
|
var proxy = new WebProxy(proxyUrl);
|
||||||
|
|
||||||
|
this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey, proxy);
|
||||||
|
|
||||||
|
Prepare();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes the client with a proxy
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="APIKey"></param>
|
||||||
|
/// <param name="proxyHost">i.e. 127.0.0.1</param>
|
||||||
|
/// <param name="proxyPort">i.e. 10000</param>
|
||||||
|
public MessageClient(String APIKey, String proxyHost, int proxyPort)
|
||||||
|
{
|
||||||
|
this.APIKey = APIKey;
|
||||||
|
|
||||||
|
var proxy = new WebProxy(proxyHost, proxyPort);
|
||||||
|
|
||||||
|
this.TelegramClient = new Telegram.Bot.TelegramBotClient(APIKey, proxy);
|
||||||
|
|
||||||
|
Prepare();
|
||||||
|
}
|
||||||
|
|
||||||
public MessageClient(String APIKey, Telegram.Bot.TelegramBotClient Client)
|
public MessageClient(String APIKey, Telegram.Bot.TelegramBotClient Client)
|
||||||
{
|
{
|
||||||
this.APIKey = APIKey;
|
this.APIKey = APIKey;
|
||||||
|
|||||||
@ -78,6 +78,60 @@ namespace TelegramBotBase
|
|||||||
this.Sessions.Client = this.Client;
|
this.Sessions.Client = this.Client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Simple start of your Bot with the APIKey and a proxyAdress
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="apiKey"></param>
|
||||||
|
/// <param name="proxyBaseAddress">i.e. https://127.0.0.1:10000</param>
|
||||||
|
public BotBase(String apiKey, System.Net.Http.HttpClient proxy)
|
||||||
|
{
|
||||||
|
this.APIKey = apiKey;
|
||||||
|
|
||||||
|
this.Client = new Base.MessageClient(this.APIKey, proxy);
|
||||||
|
|
||||||
|
this.SystemCalls = new List<string>();
|
||||||
|
|
||||||
|
this.Sessions = new SessionBase();
|
||||||
|
this.Sessions.Client = this.Client;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Simple start of your Bot with the APIKey and a proxyAdress
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="apiKey"></param>
|
||||||
|
/// <param name="proxyBaseAddress">i.e. https://127.0.0.1:10000</param>
|
||||||
|
public BotBase(String apiKey, String proxyBaseAddress)
|
||||||
|
{
|
||||||
|
this.APIKey = apiKey;
|
||||||
|
|
||||||
|
var url = new Uri(proxyBaseAddress);
|
||||||
|
|
||||||
|
this.Client = new Base.MessageClient(this.APIKey, url);
|
||||||
|
|
||||||
|
this.SystemCalls = new List<string>();
|
||||||
|
|
||||||
|
this.Sessions = new SessionBase();
|
||||||
|
this.Sessions.Client = this.Client;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Simple start of your Bot with the APIKey and a proxyAdress
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="apiKey"></param>
|
||||||
|
/// <param name="proxyHost">i.e. 127.0.0.1</param>
|
||||||
|
/// <param name="proxyPort">i.e. 10000</param>
|
||||||
|
public BotBase(String apiKey, String proxyHost, int proxyPort)
|
||||||
|
{
|
||||||
|
this.APIKey = apiKey;
|
||||||
|
|
||||||
|
this.Client = new Base.MessageClient(this.APIKey, proxyHost, proxyPort);
|
||||||
|
|
||||||
|
this.SystemCalls = new List<string>();
|
||||||
|
|
||||||
|
this.Sessions = new SessionBase();
|
||||||
|
this.Sessions.Client = this.Client;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Start your Bot
|
/// Start your Bot
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -154,13 +208,13 @@ namespace TelegramBotBase
|
|||||||
{
|
{
|
||||||
ds = await this.Sessions.StartSession<T>(e.DeviceId);
|
ds = await this.Sessions.StartSession<T>(e.DeviceId);
|
||||||
|
|
||||||
ds.LastMessage = e.MessageId;
|
ds.LastMessage = e.Message;
|
||||||
|
|
||||||
OnSessionBegins(new SessionBeginResult(e.DeviceId, ds));
|
OnSessionBegins(new SessionBeginResult(e.DeviceId, ds));
|
||||||
}
|
}
|
||||||
|
|
||||||
ds.LastAction = DateTime.Now;
|
ds.LastAction = DateTime.Now;
|
||||||
ds.LastMessage = e.MessageId;
|
ds.LastMessage = e.Message;
|
||||||
|
|
||||||
//Is this a systemcall ?
|
//Is this a systemcall ?
|
||||||
if (e.IsSystemCall && this.SystemCalls.Contains(e.SystemCommand))
|
if (e.IsSystemCall && this.SystemCalls.Contains(e.SystemCommand))
|
||||||
@ -223,7 +277,7 @@ namespace TelegramBotBase
|
|||||||
|
|
||||||
|
|
||||||
ds.LastAction = DateTime.Now;
|
ds.LastAction = DateTime.Now;
|
||||||
ds.LastMessage = e.MessageId;
|
ds.LastMessage = e.Message;
|
||||||
|
|
||||||
FormBase activeForm = null;
|
FormBase activeForm = null;
|
||||||
|
|
||||||
|
|||||||
@ -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.0.0")]
|
[assembly: AssemblyVersion("1.3.1.0")]
|
||||||
[assembly: AssemblyFileVersion("1.3.0.0")]
|
[assembly: AssemblyFileVersion("1.3.1.0")]
|
||||||
|
|||||||
@ -27,11 +27,31 @@ namespace TelegramBotBase.Sessions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long DeviceId { get; set; }
|
public long DeviceId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When did any last action happend (message received or button clicked)
|
||||||
|
/// </summary>
|
||||||
public DateTime LastAction { get; set; }
|
public DateTime LastAction { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the form where the user/group is at the moment.
|
||||||
|
/// </summary>
|
||||||
public FormBase ActiveForm { get; set; }
|
public FormBase ActiveForm { get; set; }
|
||||||
|
|
||||||
public int LastMessage { get; set; }
|
/// <summary>
|
||||||
|
/// Returns the ID of the last received message.
|
||||||
|
/// </summary>
|
||||||
|
public int LastMessageId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.LastMessage?.MessageId ?? -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the last received message.
|
||||||
|
/// </summary>
|
||||||
|
public Message LastMessage { get; set; }
|
||||||
|
|
||||||
private MessageClient Client
|
private MessageClient Client
|
||||||
{
|
{
|
||||||
@ -41,13 +61,24 @@ namespace TelegramBotBase.Sessions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns if the messages is posted within a group.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsGroup
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.LastMessage != null && this.LastMessage.Chat.Id != this.LastMessage.From.Id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public EventHandlerList __Events = new EventHandlerList();
|
public EventHandlerList __Events = new EventHandlerList();
|
||||||
|
|
||||||
private static object __evMessageSent = new object();
|
private static object __evMessageSent = new object();
|
||||||
|
|
||||||
public DeviceSession()
|
public DeviceSession()
|
||||||
{
|
{
|
||||||
this.LastMessage = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DeviceSession(long DeviceId)
|
public DeviceSession(long DeviceId)
|
||||||
@ -119,7 +150,7 @@ namespace TelegramBotBase.Sessions
|
|||||||
{
|
{
|
||||||
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));
|
||||||
}
|
}
|
||||||
catch (Telegram.Bot.Exceptions.ApiRequestException ex)
|
catch (ApiRequestException ex)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -153,7 +184,7 @@ namespace TelegramBotBase.Sessions
|
|||||||
{
|
{
|
||||||
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));
|
||||||
}
|
}
|
||||||
catch (Telegram.Bot.Exceptions.ApiRequestException ex)
|
catch (ApiRequestException ex)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -192,7 +223,7 @@ namespace TelegramBotBase.Sessions
|
|||||||
{
|
{
|
||||||
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);
|
||||||
}
|
}
|
||||||
catch (Telegram.Bot.Exceptions.ApiRequestException ex)
|
catch (ApiRequestException ex)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user