- updated readme for groups
- adding readme to project solution
This commit is contained in:
parent
e29be4f1f4
commit
7be0f15ca4
126
README.md
126
README.md
@ -71,6 +71,12 @@ Thanks !
|
|||||||
|
|
||||||
* [ButtonGrid](#button-grid)
|
* [ButtonGrid](#button-grid)
|
||||||
|
|
||||||
|
- [Groups](#groups)
|
||||||
|
* [SplitterForm](#splitter-form)
|
||||||
|
|
||||||
|
* [GroupForm](#group-form)
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
@ -764,6 +770,126 @@ await this.NavigateTo(cd);
|
|||||||
### Button Grid
|
### Button Grid
|
||||||
<img src="images/buttongrid.gif?raw=true" />
|
<img src="images/buttongrid.gif?raw=true" />
|
||||||
|
|
||||||
|
|
||||||
|
## Groups
|
||||||
|
|
||||||
|
For working with groups, there are multiple different tools which helps to work with and allows bot also to manage "Single-User" chats and group chats.
|
||||||
|
|
||||||
|
### Splitter Form
|
||||||
|
|
||||||
|
|
||||||
|
An easy way to switch between a "Single-User" form and one for managing a group is the SplitterForm base class.
|
||||||
|
It calls special methods which you can override and then move from there to the form you need.
|
||||||
|
|
||||||
|
The OpenGroup method is the "backup" if OpenChannel or OpenSupergroup is not overridden. Same for Open, it is "backup" if none of the previous methods has been overridden.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
public class Start : SplitterForm
|
||||||
|
{
|
||||||
|
public override async Task<bool> Open(MessageResult e)
|
||||||
|
{
|
||||||
|
var st = new Menu();
|
||||||
|
await this.NavigateTo(st);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override async Task<bool> OpenGroup(MessageResult e)
|
||||||
|
{
|
||||||
|
var st = new Groups.LinkReplaceTest();
|
||||||
|
await this.NavigateTo(st);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> OpenChannel(MessageResult e)
|
||||||
|
{
|
||||||
|
return base.OpenChannel(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> OpenSupergroup(MessageResult e)
|
||||||
|
{
|
||||||
|
return base.OpenSupergroup(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Group Form
|
||||||
|
|
||||||
|
For managing groups im introducing a new base class called "GroupForm". This one has special events which should make it easier to work with groups and channels.
|
||||||
|
In the Example project is a simple example for deleting a url written by a user and incrementing an internal counter. At every url he writes he got blocked for a small amount of time and the messages gots deleted. At 3 "failes" the user gets kicked of the group and blocked.
|
||||||
|
|
||||||
|
```
|
||||||
|
public class GroupForm : FormBase
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public override async Task Load(MessageResult message)
|
||||||
|
{
|
||||||
|
switch (message.MessageType)
|
||||||
|
{
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded:
|
||||||
|
|
||||||
|
await OnMemberChanges(new MemberChangeEventArgs(Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded, message, message.RawMessageData.Message.NewChatMembers));
|
||||||
|
|
||||||
|
break;
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.ChatMemberLeft:
|
||||||
|
|
||||||
|
await OnMemberChanges(new MemberChangeEventArgs(Telegram.Bot.Types.Enums.MessageType.ChatMemberLeft, message, message.RawMessageData.Message.LeftChatMember));
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.ChatPhotoChanged:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.ChatPhotoDeleted:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.ChatTitleChanged:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.MigratedFromGroup:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.MigratedToSupergroup:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.MessagePinned:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.GroupCreated:
|
||||||
|
case Telegram.Bot.Types.Enums.MessageType.SupergroupCreated:
|
||||||
|
|
||||||
|
await OnGroupChanged(new GroupChangedEventArgs(message.MessageType, message));
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
OnMessage(message);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual async Task OnMemberChanges(MemberChangeEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public virtual async Task OnGroupChanged(GroupChangedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public virtual async Task OnMessage(MessageResult e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
I will add more notes to it soon, so stay tuned.
|
I will add more notes to it soon, so stay tuned.
|
||||||
|
|||||||
@ -26,6 +26,15 @@ namespace TelegramBotBaseTest.Tests
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override Task<bool> OpenChannel(MessageResult e)
|
||||||
|
{
|
||||||
|
return base.OpenChannel(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<bool> OpenSupergroup(MessageResult e)
|
||||||
|
{
|
||||||
|
return base.OpenSupergroup(e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TelegramBotBase", "Telegram
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TelegramBotBaseTest", "TelegramBotBaseTest\TelegramBotBaseTest.csproj", "{88EC0E02-583D-4B9D-956C-81D63C8CFCFA}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TelegramBotBaseTest", "TelegramBotBaseTest\TelegramBotBaseTest.csproj", "{88EC0E02-583D-4B9D-956C-81D63C8CFCFA}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3856B3FB-63E3-444A-9FF0-34171BE7AC5D}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
README.md = README.md
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user