首先,我对这些东西不熟悉。我想编写一个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)
显然不是真实的东西,只是"显示"我想在那里做什么。
如果有人能告诉我这样的事情是多么可能会很好。提前谢谢。
答案 0 :(得分:0)
由于您在此处使用Context
对象。我假设您在Discord.NET中使用CommandModule。
首先,您可以按Context.Channel
获取频道,它会返回IMessageChannel
个对象。
如果您希望机器人通过用户标记频道来查找频道。有Context.Tags
,它返回标记对象列表(ITag
)。只需循环遍历它并获取标记的通道对象。
(关于ITag
对象的文档是here。)
要获取消息,如果您指的是过去的消息,则GetMessagesAsync
对象有IMessageChannel
方法。
因此,您可以执行var messages = Context.Channel.GetMessagesAsync(2);
,messages
将是包含最近发送的消息的2个元素的列表。
(该方法的文档为here。)
(注意:列表本身也会包含用户刚刚发送给僵尸程序的消息。如果你想要之前的2条消息,你可以改为3条消息并忽略第一个元素。)
最后,只需遍历消息列表或其他内容,.NET上就有一个String.StartWith()
方法可以帮助您轻松生活。
(它位于.NET文档的here中)