当Discord-bot没有在频道中找到角色时做一些事情

时间:2017-09-18 18:53:48

标签: c# discord discord.net

首先,我对这些东西不熟悉。我想编写一个Discord-bot-function,它在用户在特定频道发送的每条消息的开头查找一个字符,如果机器人连续两次找不到该字符,它就会写东西

string neededCharacter = ">";

if (Dont.FindCharacterTwoTimesInARow.Equals(neededCharacter)) //If you don't find neededCharacter in sent messages two times in a row
{

   if (ChannelName.Equal("channel_name")) //look for the specific channel
   {

      //send message to the channel, stating that the character hasn't been found
      await Context.Channel.SendMessageAsync("'>' not found two times in a row");

   }

}

请注意ChannelName.Equal("channel_text")Dont.FindCharacterTwoTimesInARow.Equals(neededCharacter)显然不是真实的东西,只是"显示"我想在那里做什么。

如果有人能告诉我这样的事情是多么可能会很好。提前谢谢。

1 个答案:

答案 0 :(得分:0)

由于您在此处使用Context对象。我假设您在Discord.NET中使用CommandModule。

首先,您可以按Context.Channel获取频道,它会返回IMessage​Channel个对象。

如果您希望机器人通过用户标记频道来查找频道。有Context.Tags,它返回标记对象列表(ITag)。只需循环遍历它并获取标记的通道对象。
(关于ITag对象的文档是here。)

要获取消息,如果您指的是过去的消息,则GetMessagesAsync对象有IMessage​Channel方法。
因此,您可以执行var messages = Context.Channel.GetMessagesAsync(2);messages将是包含最近发送的消息的2个元素的列表。
(该方法的文档为here。)

注意:列表本身也会包含用户刚刚发送给僵尸程序的消息。如果你想要之前的2条消息,你可以改为3条消息并忽略第一个元素。)

最后,只需遍历消息列表或其他内容,.NET上就有一个String.StartWith()方法可以帮助您轻松生活。
(它位于.NET文档的here中)