我正在尝试将在不和谐频道中发送的最后一条消息用作Windows窗体应用程序中的字符串,但我似乎无法将IMessage
转换为string
。我也很难收到上次发送的消息ID
。
使用GetMessagesAsync(10).First().ID
返回3位数字而不是18位数字?使用不和谐的实际消息ID即可。
非常感谢您的帮助。
try
{
await Client.LoginAsync(TokenType.Bot, Token);
await Client.StartAsync();
}
catch
{
MessageBox.Show("Unable to connect.");
return;
}
Client.Ready += getMessage;
private async Task getMessage()
{
ulong msgid = (ulong)Client.GetGuild(525039283917291520).GetTextChannel(532107460807491584).GetMessagesAsync(10).FirstOrDefault().Id;
var channel = Client.GetChannel(532107460807491584) as SocketTextChannel;
var msg = channel.GetMessageAsync(msgid); // id is 3 digits instead of 18? not sure why.
Console.WriteLine("MESSAGE: " + msg);
}
private Task Client_Log(LogMessage arg)
{
Invoke((Action)delegate
{
Console.WriteLine(arg);
});
return null;
}
答案 0 :(得分:1)
您需要使用<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:usesCleartextTraffic="true"
tools:targetApi="m">
方法await
,因为它是GetMessageAsync
。然后,每个消息内容都存储在Task<IMessage>
属性中。此外,您以前已经获得了消息对象,因此无需检索同一消息的另一个实例。
理想情况下,就绪处理程序应如下所示:
Content
参考文献:
答案 1 :(得分:0)
多亏了Still H的代码,它才能正常工作。我刚刚对其进行了修改,以获取发送的最后一条消息的ID :)这是以后查看此代码的任何人的代码;
private async Task clientReady()
{
Channel = Client.GetChannel(525085451598692364) as SocketTextChannel;
if (!(Channel is ISocketMessageChannel msgChannel)) return;
var msgId = (await Channel.GetMessagesAsync(1).FlattenAsync()).FirstOrDefault().Id;
var msg = await msgChannel.GetMessageAsync(msgId);
if (msg != null) Console.WriteLine(msg.Content + " ID: ");
}