Discord Bot onMessage

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von xored.

    Discord Bot onMessage

    Hallo,
    wie schaffe ich es, dass ich dem Discord Bot eine private Nachricht schicke und er mir darauf eine Antwort zurückgibt?
    Beispiel, ich schreibe dem Bot !say Hallo und der Bot antwortet dann zurück mit Guten Tag oder Guten Tag {user}

    Im Channel bekomme ich eine Antwort auf !say Hallo, sowohl im Channel als auch private Nachricht zurück.

    VB.NET-Quellcode

    1. Private Async Function onMessage(message As SocketMessage) As Task
    2. Dim user = TryCast(message.Author, SocketGuildUser)
    3. If message.Source <> MessageSource.Bot And message.Content.StartsWith("!") Then
    4. If message.Content.StartsWith("!say Hallo") And DirectCast(message.Author, SocketGuildUser).Roles.ToList.Contains(DirectCast(message.Channel, IGuildChannel).Guild.GetRole(915277)) Then
    5. Await message.Channel.SendMessageAsync("Hallo")
    6. Await user.SendMessageAsync("Hallo")
    7. End If
    8. End If
    9. End Function


    Vielen Dank für die Hilfe.
    Ist zwar c#, aber kann man übersetzen. onMessage ist glaube ich wie du schon gesehen hast nicht für Direktnachrichten. Probier das mal:

    C#-Quellcode

    1. ​private async Task MessageReceived(SocketMessage msg) {
    2. }


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Funktioniert leider auch nicht.
    Sieht so aus, als ob er nur die Nachrichten im Channel überprüft.

    VB.NET-Quellcode

    1. If DirectCast(message.Author, SocketGuildUser).Roles.ToList.Contains(DirectCast(message.Channel, IGuildChannel).Guild.GetRole(Botroleid.Text)) Then

    System.InvalidCastException: "Das Objekt des Typs "Discord.WebSocket.SocketUnknownUser" kann nicht in Typ "Discord.WebSocket.SocketGuildUser" umgewandelt werden."


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pixxxas“ ()

    Hey, habe meinen alten Discordbot gefunden (c#), der hat auf Privatnachrichten gehört.

    Erstmal hatte ich einen CommandHandler:

    C#-Quellcode

    1. ​private CommandHandler _handler;
    2. _handler = new CommandHandler(_client);


    Und das war meine CommandHandler Klasse:

    C#-Quellcode

    1. class CommandHandler
    2. {
    3. private DiscordSocketClient _client;
    4. private CommandService _service;
    5. public CommandHandler(DiscordSocketClient client)
    6. {
    7. _client = client;
    8. _service = new CommandService();
    9. _service.AddModulesAsync(Assembly.GetEntryAssembly());
    10. _client.MessageReceived += HandleCommandAsync;
    11. }
    12. private async Task HandleCommandAsync(SocketMessage s)
    13. {
    14. var msg = s as SocketUserMessage;
    15. if (msg == null) return;
    16. var context = new SocketCommandContext(_client, msg);
    17. int argPos = 0;
    18. if(msg.HasCharPrefix('!', ref argPos))
    19. {
    20. var result = await _service.ExecuteAsync(context, argPos);
    21. if(!result.IsSuccess && result.Error !=CommandError.UnknownCommand)
    22. {
    23. await context.Channel.SendMessageAsync(result.ErrorReason);
    24. }
    25. }
    26. }
    27. }


    Müsstest du übersetzen (geht online ja easy), aber das hat früher geklappt.


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza