如何将表情符号添加到字符串然后添加到.ToList

时间:2019-08-17 11:07:26

标签: c# discord discord.net

我当前正在尝试为Discord BOT创建一个Poll命令。我想编辑字符串answer并根据给出答案的编号在该答案的开头添加一个表情符号。

EG用户将输入?poll“ questionhere”“ answer1”“ answer2”-我想使用“ answer1”并更改为“:one:answer1”,依此类推,但我不确定该怎么做这样做。

如果可能的话,我想建议的第二件事是我当前如何管理添加到邮件中的响应数量,必须有一种更好的方式来做我正在做的事情,但我仍然相当陌生这和学习,所以将对如何更好地构造以下内容提供任何建议或建议。

//Take the string answer and split into separate strings based on text inside ""
var result = answer.Split('"').Where((x, i) => i % 2 == 1).ToList();

if (result.Count() == 2)
 {

 List<List<string>> listChunks = StaticObjects.SplitIntoChunks<string>(result, 50);

 for (int i = 0; i < listChunks.Count; i++)
  {
    listChunks = listChunks.OrderBy(x => x).ToList();
    string description = String.Join(Environment.NewLine, listChunks[i]);

  EmbedBuilder eb = new EmbedBuilder()
  {
    Title = $@":bar_chart:**{question.ToUpper()}**",
    Description = description,
    Color = new Color(0, 0, 127),
  };

var message = await ReplyAsync(embed: eb.Build());
var YourEmoji1 = new Emoji("1\u20e3");
var YourEmoji2 = new Emoji("2\u20e3");
await message.AddReactionAsync(YourEmoji1);
await message.AddReactionAsync(YourEmoji2);

当前然后继续if (result.Count() == 3)

更新 我找到了一种在字符串前添加表情符号的方法,但是现在我不知道如何将其传递回原始的result

var one = "1\u20e3" + result.ElementAt(0);

更新2 我现在设法使它起作用:)

添加了此

if (result.Count() == 2)
  {
  var one = "1\u20e3" + " " + "-" + " " + result.ElementAt(0); 
  var two = "2\u20e3" + " " + "-" + " " + result.ElementAt(1);

并将result更改为one, two

string description = String.Join(Environment.NewLine, one, two);

更新3 我发现你可以改变

var YourEmoji1 = new Emoji("1\u20e3");
var YourEmoji2 = new Emoji("2\u20e3");
await message.AddReactionAsync(YourEmoji1);
await message.AddReactionAsync(YourEmoji2);

await message.AddReactionAsync(new Emoji("1\u20e3"));
await message.AddReactionAsync(new Emoji("2\u20e3"));

我现在只剩下用一种更加优雅的方式来构造它的问题了,因此只要我想允许最多10个答案,代码就不会很荒谬

1 个答案:

答案 0 :(得分:1)

既然您找到了解决方案,现在只想清理代码,我对可读性的建议只是

在声明表情符号(new Emoji("1\u20e3"))时无需使用字符代码。相反,只要包括:,就可以使用Discord表情符号名称。 例如:new Emoji(":one:")new Emoji(":two:")

类似地,可以清理以下内容

  var one = "1\u20e3" + " " + "-" + " " + result.ElementAt(0); 

对此:

  var one = ":one: - " + result.ElementAt(0); 

以此类推。

这不会使您的代码工作得更好,但是会 使其更具可读性。