Как сделать так, чтобы бот узнал, что с ним кто-то связался? SteamBot на основе C#
Хорошо, во-первых, я не очень продвинут в этом, xD
В public override void OnMessage (string message, EChatEntryType type)
Я хочу выполнить серию тестов, чтобы выяснить, какой ответ отправить.
Первый тест - проверить, начинается ли сообщение с команды. Я являюсь администратором группы серверов CSGO под названием "Warmup Servers", и это будет ряд частей, которые будут генерировать и передавать информацию в отдельный файл журнала.
Так что я работаю над кастомом
UserHandler.cs
для моего парня Я планирую написать простой сценарий, чтобы я мог сделатьexec [botname] TGTOnline
&exec [botname] TGTOffline
сообщить боту, используя его учетную запись. (Как играть в игры или что-то на этом счету).Чтобы проверить, начинается ли сообщение с любого из предопределенных ответов. (Подробнее будет добавлено позже)
Чтобы проверить, отправил ли бот сообщение раньше. Я не хочу, чтобы кто-то начинал разговор со мной, и бот отправлял свой ответ по умолчанию каждый раз, когда он получает сообщение, это будет раздражать для обеих сторон.
Поэтому, прежде чем вызывать сообщение по умолчанию, мне нужно иметь функцию, которая проверяет, отправляла ли пользовательская учетная запись бота (как ответ бота, так и ответ человека) последнее сообщение пользователю (последние 5 минут), и, если это так, сообщает бот ничего не делать...
Тем не менее, я понятия не имею, с чего начать с этим сценарием, и хотел бы получить совет!
Вот мой TGTUserHandler.cs
раздел, который относится:
using System;
using SteamKit2;
using System.Threading.Tasks;
using System.Collections.Generic;
using SteamTrade;
using SteamTrade.TradeOffer;
using SteamTrade.TradeWebAPI;
namespace SteamBot
{
public class TGTUserHandler : UserHandler
{
private bool TGTOnline = false;
private TaskCompletionSource<string> _UserReport;
public TGTUserHandler(Bot bot, SteamID sid) : base(bot, sid) { }
private bool HandleUserReport(string message)
{
if (_UserReport == null)
return false;
//to be scripted in the morning
_UserReport = null;
return true;
}
public override void OnMessage(string message, EChatEntryType type)
{
if (message.StartsWith("!"))
{
if (message.StartsWith("!help"))
{
SendChatMessage("Welcome to the TGTGaming Automated Bots, We have very limited commands and currently do not do any type of automated trade. Here is the list of current commands you can use:");
SendChatMessage("!WarmupServers [help | Report | Issue] | This command is used for all issues related to the WarmupServer's. Do `!Warmupservers help` for more information");
SendChatMessage("!getadmin | This command is used to contact a TGTGaming administrator. Please do `!getadmin help` for more information");
}
if (message.StartsWith("!WarmupServers"))
{
if (message.StartsWith("!WarmupServers help"))
{
SendChatMessage("Warmup Servers Automated Support by TGTGamer");
SendChatMessage("Commands:");
SendChatMessage("!WarmupServers Report | Used to report a user for specific reasons. This is step by step process");
SendChatMessage("!WarmupServers issue | Used to report a issue with the servers. This is a step by step process");
}
if (message.StartsWith("!WarmupServers Report"))
{
GetUserResponse("You have started the user reporting process, please confirm this is what you wanted to do. [y/n]");
if (message.StartsWith("y"))
{
SendChatMessage("A few quick questions first, please respond yes or no");
GetUserResponse("Are you still in the server?");
if (message.StartsWith("y"))
{
GetUserResponse("Is the User you wish to report still in your server?");
if (message.StartsWith("y"))
{
GetUserResponse("Is there a VIP in the server?");
if (message.StartsWith("y"))
{
SendChatMessage("Please ask the VIP to do a !startvote on this user with your reason.");
}
else
{
_UserReport = new TaskCompletionSource<string>();
return _UserReport.Task;
}
}
else
{
_UserReport = new TaskCompletionSource<string>();
return _UserReport.Task;
}
}
else
{
_UserReport = new TaskCompletionSource<string>();
return _UserReport.Task;
}
}
else
{
SendChatMessage("You have cancelled this action");
}
}
}
}
else
{
if (TGTOnline)
{
//general Responses
if (message.StartsWith("Hello"))
{
SendChatMessage("What's up?");
}
if (message.StartsWith("Heya"))
{
SendChatMessage("Hello");
}
if (message.StartsWith("Hi"))
{
SendChatMessage("Heya");
}
else
{
//defualt response
SendChatMessage(Bot.ChatResponse);
}
}
else
{
//defualt response
SendChatMessage(Bot.ChatResponse);
}
}
}
}
}
Все и любая помощь будет оценена.
С уважением.
TGT
Внешние ссылки, которые вы можете найти полезными:
Бот Github: https://github.com/Jessecar96/SteamBot/
UserHandler.cs: https://github.com/Jessecar96/SteamBot/blob/master/SteamBot/UserHandler.cs
Примечания:
Абонентское соглашение Steam:
Абонентское соглашение Steam гласит следующее:
Вы не можете использовать читы, программное обеспечение для автоматизации (боты), моды, хаки или любое другое неавторизованное стороннее программное обеспечение, чтобы модифицировать или автоматизировать любой процесс на Бирже подписок.
Так как я использую этого бота для автоматизации действий сторонних серверов (Rcon Kick, перезапуски серверов и т. Д.), Это относится к соглашению Steam с абонентским соглашением для ботов. Если бы я тогда начал продавать или покупать автоматически с этим ботом, это нарушило бы соглашение с подписчиком.