我当前正在尝试为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个答案,代码就不会很荒谬
答案 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);
以此类推。
这不会使您的代码工作得更好,但是会 使其更具可读性。