discord.py AttributeError: 'ClientUser' object has no attribute 'avatar_url'?
Hi, 

ich bau momentan einen discord Bot mit python der ein Formular strten soll.

Code:

@bot.command()
async def testform(ctx):
    form = Form(ctx,'Title')
    form.add_question('Question 1','first')
    form.add_question('Question 2','second')
    form.add_question('Question 3','third')
    await form.start()

Error:

2023-09-09 08:58:09 ERROR    discord.ext.commands.bot Ignoring exception in command testform
Traceback (most recent call last):
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/core.py", line 235, in wrapped
    ret = await coro(*args, **kwargs)
  File "/workspaces/moon/dir/.py/homeworkBOT/main.py", line 43, in testform
    await form.start()
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/forms/form.py", line 221, in start
    embed.set_author(name=f"{self.title}: {n+1}/{len(self._questions)}", icon_url=self._bot.user.avatar_url)
AttributeError: 'ClientUser' object has no attribute 'avatar_url'


The above exception was the direct cause of the following exception:


Traceback (most recent call last):
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/bot.py", line 1350, in invoke
    await ctx.command.invoke(ctx)
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/core.py", line 1029, in invoke
    await injected(*ctx.args, **ctx.kwargs)  # type: ignore
  File "/usr/local/python/3.10.4/lib/python3.10/site-packages/discord/ext/commands/core.py", line 244, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'ClientUser' object has no attribute 'avatar_url'

Ich verstehe nicht was mit 'avatar_url' gemeint ist da ich diese nicht in meinem Code benutze.

Ich hoffe jemand kann mir helfen.

Code, Python, Forms, Python 3, Discord, Discord Bot
Box collider funktioniert nicht mit rb.MovePosition?

Ich habe mit Unity angefangen und habe ein kleines problem:
Und zwar habe ich eine kamera mit boxcollider und einen terrain mit terraincollider. Nur leider kann ich die kamera durch das terrain durchschieben! Ich habe schon den verdacht dass es an rb.MovePosition liegt aber weiß nicht wie ich das reparieren kann! Alles wie zumbeispiel rigidbody sind auf der kamera da bin ich mir sicher! Es kommt auch kein Fehler in der Konsole!
Mein Kompletter code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SmoothMove : MonoBehaviour
{
   public float rotationSpeed = 2.0f;
   public float smoothRotationFactor = 5.0f;
   private float yaw = 0.0f;
   private float pitch = 0.0f;

   public float jumpForce = 10.0f;
   public float moveSpeed = 20.0f;
   private Rigidbody rb;
   private bool isMovingForward = false;

   private void Start()
   {
       rb = GetComponent<Rigidbody>();
   }

   private void Update()
   {
       HandleCameraRotation();

       if (Input.GetKeyDown(KeyCode.Space))
       {
           Jump();
       }

       if (Input.GetKeyDown(KeyCode.UpArrow))
       {
           StartMovingForward();
       }

       if (Input.GetKeyUp(KeyCode.UpArrow))
       {
           StopMovingForward();
       }

       if (isMovingForward)
       {
           MoveForward();
       }
   }

   private void HandleCameraRotation()
   {
       if (Input.GetMouseButton(0))
       {
           yaw += rotationSpeed * Input.GetAxis("Mouse X");
           pitch -= rotationSpeed * Input.GetAxis("Mouse Y");
           Quaternion targetRotation = Quaternion.Euler(pitch, yaw, 0.0f);
           transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.deltaTime * smoothRotationFactor);
       }
   }

   private void Jump()
   {
       rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y + 5, rb.velocity.z);
   }

   private void StartMovingForward()
   {
       isMovingForward = true;
   }

   private void StopMovingForward()
   {
       moveSpeed = 20f;
       isMovingForward = false;
   }

   private void MoveForward()
   {
       moveSpeed += 0.1f;
       Vector3 forwardDirection = transform.forward;
       forwardDirection.y = 0.0f; // Keep movement on the horizontal plane
       rb.MovePosition(rb.position + forwardDirection * moveSpeed * Time.deltaTime);
   }
}

Ich würde mich sehr freuen wenn ihr mir helft. Danke :)

C Sharp, Code, Programmiersprache, Spieleentwicklung, Unity 3D, Visual Studio, Unity
Discord JS Bot Button Geht nicht?

Meine index.js

const Discord = require('discord.js');
const { Intents } = Discord;
const client = new Discord.Client({
  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MEMBERS, Intents.FLAGS.GUILD_MESSAGES]
});

const welcomeBot = require('./Commands/welcome-bot');
const Zaehlung = require('./Commands/Zaehlung');

const channelId = '1132493981956194381';
const targetChannelId = '1132493981771628610';
const verifiedRoleId = '1132493981306077190';

client.on('ready', async () => {
  console.log(`Logged in as ${client.user.tag}`);

  const targetChannel = await client.channels.fetch(targetChannelId);

  const button = new Discord.MessageButton()
    .setStyle('PRIMARY')
    .setLabel('Verifizieren')
    .setCustomId('verify');

  const row = new Discord.MessageActionRow().addComponents(button);

  await targetChannel.send({
    content: 'Klicke auf den Button, um dich zu verifizieren:',
    components: [row]
  });

  console.log('Code reached here.');
});

client.on('message', async (message) => {
  if (message.channel.id === channelId && !message.author.bot) {
    Zaehlung.processMessage(message, channelId);
  }
});

client.on('guildMemberAdd', async (member) => {
  welcomeBot(member);
});

client.once('ready', () => {
  console.log('Bot ist bereit.');
});

client.login('');

Meine AntiBot.js Was in ordner Commands ist

const Discord = require('discord.js');


module.exports = async (client) => {
    console.log('Bot ist bereit.');


    const targetChannelId = '1132493981771628610';
    const verifiedRoleId = '1132493981306077190';


    try {
        const targetChannel = await client.channels.fetch(targetChannelId);


        const button = new Discord.MessageButton()
            .setStyle('PRIMARY')
            .setLabel('Verifizieren')
            .setCustomId('verify');


        const row = new Discord.MessageActionRow().addComponents(button);


        await targetChannel.send({
            content: 'Klicke auf den Button, um dich zu verifizieren:',
            components: [row],
        });
    } catch (error) {
        console.error('Fehler beim Senden des Buttons:', error);
    }
};


client.on('interactionCreate', async (interaction) => {
    if (!interaction.isButton()) return;


    if (interaction.customId === 'verify' && interaction.user) {
        const verifiedRole = interaction.guild.roles.cache.get(verifiedRoleId);
        if (verifiedRole) {
            try {
                await interaction.member.roles.add(verifiedRole);
                await interaction.reply({
                    content: 'Du wurdest erfolgreich verifiziert!',
                    ephemeral: true,
                });
            } catch (error) {
                console.error('Fehler beim Verifizieren des Mitglieds:', error);
            }
        }
    }
});

Button Wird Bei Bot start erstellt aber wenn ich drauf klicke kommt diese fehler meldng Von Discord

Sehe mein Bild und in console gibt leider keine Fehler meldung Ich hoffe ihr könnt mir hilfen

Bild zum Beitrag
JavaScript, Code, Programmiersprache, node.js, Discord, Discord Bot
Hallo ich habe ein Code in Unity wo es eine Fehlermeldung gibt die ich nicht verstehe. Könnt ihr mir helfen?

Die Fehlermeldung lautet

Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand

Fehler CS1061 "Animation" enthält keine Definition für "SetBool", und es konnte keine zugängliche SetBool-Erweiterungsmethode gefunden werden, die ein erstes Argument vom Typ "Animation" akzeptiert (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis). Assembly-CSharp C:\Users\Me\2d platform\Assets\Player.cs 27 Aktiv

Der ganze Code ist

public class Player : MonoBehaviour

{

  public float speed = 5;

  private Rigidbody2D rb;

  public float jumph = 5;

  private bool ig =false;

  private Animation anim;

  // Start is called before the first frame update

  void Start()

  {

    rb = GetComponent<Rigidbody2D>();

    anim = GetComponent<Animation>();

  }

  // Update is called once per frame

  void Update()

  {

    float richtung = Input.GetAxis("Horizontal");

    if(richtung != 0)

    {

      anim.SetBool("IsRunning", true);

    }

    else

    {

      anim.SetBool("IsRunning", false);

    }

    transform.Translate(Vector2.right * speed * richtung * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.Space) && ig)

    {

      rb.AddForce(Vector2.up * jumph, ForceMode2D.Impulse);

      ig = false;

    }

  }

  private void OnCollisionEnter2D(Collision2D collision)

  {

    if(collision.gameObject.tag == "g")

    {

      ig = true;

    }

  }

}

C Sharp, Code, Programmiersprache, Visual Studio, Unity, unity 2d
Zugriff auf svg Element in HTML gibt immer "null" zurück?

Hallo zusammen,

folgendes Problem:

Ich möchte aus meinem javascript Code zu laufzeit auf meine sonarGrafik.svg zugreifen können um deren Elemente zu manipulieren (oder neue hinzufügen zu können).

So sieht erstmal der ganze HTML Code aus:

<!DOCTYPE html>
<html>
<head>
    <title>Arduino Daten</title>
    <link rel="icon" href="data:,">
    <script src="scripts/script.js"></script>
    <link rel="stylesheet" href="styles/style.css"> 
</head>
<body>
    <object id = "svgObject" data="styles/sonarGrafik.svg" type="image/svg+xml"></object>
</body>
</html>

Der betroffene Teil in meinem javascript Code:

function insertDots(cx, cy) {
    const svgObject = document.getElementById("svgObject");
    console.log(svgObject.contentDocument) // hier erhalte ich in der Console immer "null"


    svgObject.addEventListener("load", function() {
        if (svgObject && svgObject.contentDocument) {
            const sonarSVG = svgObject.contentDocument.getElementById("sonar");
            console.log(sonarSVG);
        }
    });
}

(Die funktion insertDots(cx, cy) wird alle paar sekunden aufgerufen und ich erhalte in der Browser Konsole immer nur null. Dementsprechend ist die if Bedienung darunter auch nie wahr)

In meiner .svg Datei gibt es definitv die id= "sonar":

<svg id="sonar" width="700" height="700" xmlns="http://www.w3.org/2000/svg">
  <rect x="0" y="0" width="100%" height="100%" fill="rgba(128, 128,   128, 0.25)" />
</svg>

So sieht meine Ordnerstruktur aus:

Website
│   SonarVisuallisierung.html
│
├── scripts
│       script.js
│
└── styles
        style.css
        sonarGrafik.svg


Gibt es irgendwo einen Fehler oder eine andere Möglichkeit auf die Elemente der .svg Datei über das script zuzugreifen? (Den Inhalt der .svg will ich ausgelagert lassen und nicht in das HTML einfügen wegen der Übersichtlichkeit)

Danke für alle Lösungsvorschläge.

HTML, Webseite, JavaScript, Code, Programmiersprache
Woran könnte es liegen, dass die Entschlüsselung der AES verschlüsselten Nachricht vom Client auf der Serverseite nicht korrekt funktioniert?

Beschreibung:

Ich habe eine Client-Server-Anwendung, bei der der Server einen Befehl an den Client sendet, der diesen Befehl auf dem Client ausführt und dann das Ausgaberesultat zurück an den Server schickt. Der Command-Output wird verschlüsselt, bevor er an den Server gesendet wird, und sollte auf der Serverseite entschlüsselt werden, um die Ausgabe anzuzeigen.

Ablauf:

Client:

public void executeCommand() {
    try {
        Process p = Runtime.getRuntime().exec("cmd /c " + commandInput);
        p.getOutputStream().close();


        InputStream processStdOutput = p.getInputStream();
        Reader r = new InputStreamReader(processStdOutput);
        BufferedReader br = new BufferedReader(r);
        String line;


        while ((line = br.readLine()) != null) {
            writeToServerSocket("cmd18721378231dcad2");
            writeToServerSocket(line + "\n");
            writer.flush();
        }


        p.waitFor();
    } catch (Exception ex) {
        System.out.println(ex.getLocalizedMessage());
    }
}

public void writeToServerSocket(String message) {
	try {
		String encodedMessage = EncryptionHelper.encrypt(message);
		writer.write(encodedMessage);
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

Server:

In einer Dauerschleife wird überprüft:

...
String encryptedInput = scanner.nextLine();
            		String input = EncryptionHelper.decrypt(encryptedInput); // Hier vermutlich Fehler
...
else if (input.contains("cmd18721378231dcad2")) {
    String commandOutput = input.substring(19);
    // Problem: Die Entschlüsselung des commandOutput funktioniert nicht korrekt
    // Hier sollte der entschlüsselte Text angezeigt werden
    controller.updatejTextAreaAllChat(commandOutput + "\n");
}

...

Problem:

Der verschlüsselte Command-Output wird vermutlich (nicht komplett sicher da System.out.println zum debuggen beim Server nicht funktioniert aus welchem Grund auch immer) erfolgreich an den Server gesendet, aber die Entschlüsselung auf der Serverseite funktioniert nicht wie erwartet. Der entschlüsselte Text wird nicht korrekt angezeigt, und es wird sobald ich die Anwendung beende die Fehlermeldung "Input byte array has incorrect ending byte" angezeigt.

Code für die Verschlüsselung/Entschlüsselung:

public class EncryptionHelper {
    private static final String KEY = "mysecretkey";


    public static String encrypt(String plainText) throws Exception {
        // ... (Verschlüsselungslogik)
    }


    public static String decrypt(String encryptedText) throws Exception {
        // ... (Entschlüsselungslogik)
    }
}

Was habe ich bereits versucht:

  • Die Übertragung der verschlüsselten Daten wurde überprüft und scheint intakt zu sein.
  • Die Verschlüsselungslogik wurde überprüft und sie scheint korrekt zu sein.
  • Andere Bereiche des Codes wurden überprüft, um sicherzustellen, dass sie das Entschlüsselungsproblem nicht verursachen.
Java, Code, Eclipse, encryption, Socket
Passt der Pseudocode zu dem Algorithmus (n-step SARSA)?

Vielleicht sagt n-step SARSA ja dem einen oder anderem was, falls nicht, hier die Kurzfassung: Es geht um Reinforcement Learning. Pro Zeitschritt kann man eine Action nehmen und bekommt dafür einen Reward. Bei n-step SARSA summiert die Rewards für n Schritte auf und berechnet dann "wie gut" der aktuelle Stand so ist indem man den aufsummierten Reward mit dem zu noch zu erwartenden Reward (bis man am Ziel ist) addiert.

So sieht anscheinend der Code dazu aus:

Hier mal ein Beispiel:

Man bekommt immer 0 Reward außer wenn man im Ziel (G) ankommt. Weil man über 10 Schritte aufsummiert hat, wird die Info 10 Schritte nach hinten "übermittelt". Macht total Sinn. Was ich aber an dem Code nicht check ist der r > 0 check.

Angenommen n = 10, dann passiert das erste update bei r = 9-10+1 = 0

Also t = 9, in dem Bild aber schon bei t = 7 (was meiner Meinung nach auch richtig ist)

Laut code wird ja V(S_r) angepasst, warum aber nicht V(S_t)? Ich hab dann ja ausgehen von t n Rewards gesammelt, sodass ich dann den Stand zum Zeitpunkt t anpassen sollte?

Und wenn man jetzt z.B. einen schnelleren Weg zum Ziel findet, von mir aus in 6 Schritte, würde r = 5 - 10 + 1 = -4 sein und macht nie ein Update. Das kann nicht stimmen, der Wer müsste dann einfach die Summe der Rewards von t=0 bis t=5 sein (Dafür ist auch der r+n < T check).

Bin ich irgendwie lost grad oder stimmt da echt was nicht?

Bild zum Beitrag
Mathematik, programmieren, Code, Algorithmus, Pseudocode
Wieso funktioniert der Code nicht?

binärbaum:

wenn ich das in der main erstelle mit

Tree t1 = new Tree();
t1.add(9);
t1.add(1);
t1.add(23);
und dann t1.root ausprinte funktinoiert es, aber t1.root.left liefert null, also es gibt nen fehler, wieso aber?

hat es was damit zu tun " parent = new TNode(data);" ?ich übergeben den linken knoten der wurzel und das ist jetzt parent, und dann weise ich parent neu zu also ich weise den linken knoten der wurzel neu zu, wieso geht das aber nicht?


public class Tree {
    TNode root;


    Tree(){
        this.root = null;
    }


    public void add(int data){
        if(root == null){
            root = new TNode(data);
        }else{
            if(data < this.root.data){
                add(data, root.left);
                System.out.println("miosty");
            }else {
                add(data, root.right);
            }
        }
    }
     public void add(int data, TNode parent){
        if(parent == null){
            System.out.println("Zu");
           parent = new TNode(data);
        }else{
            if(data < parent.data){
                add(data, parent.left);
            } else {
                add(data, parent.right);
            }
        }
    }
}
HTML, Webseite, Java, JavaScript, Array, Code, PHP, Programmiersprache, Python, Webentwicklung, Algorithmus
Wie lege ich einen lokalen Benuterz mithilfe eines Powersehll Skript an?

Hierzu möchte ich ein Formular vwerdenden.

Folgendes habe ich erstellt:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'lokaler Benutzer'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Benutzername:'
$form.Controls.Add($label)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,70)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'vollständiger Name:'
$form.Controls.Add($label)
$Benutzername = New-Object System.Windows.Forms.TextBox
$Benutzername.Location = New-Object System.Drawing.Point(10,40)
$Benutzername.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($Benutzername)
$Name = New-Object System.Windows.Forms.TextBox
$Name.Location = New-Object System.Drawing.Point(10,90)
$Name.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($Name)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
   $x = $textBox.Text
   $x
}
New-LocalUser $Benutzername  -FullName $Name
Windows, programmieren, Code, dotNet, PowerShell
Cross Origin Anfrage blockiert?

Ich möchte gerade eine REST-API für mein Heimnetzwerk einrichten um über z.B. einen button einen CMD befehl auf dem Server PC auszuführen.

Mein Pythonscript für die API:

from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/execute-command', methods=['POST'])
def execute_command():
  # Hier wird der Code zum Ausführen des Befehls eingefügt
  result = "Befehl wurde ausgeführt."
  return jsonify({"response": result})

if __name__ == '__main__':
  app.run(host='0.0.0.0', port=5000)
Mein HTML Script<!DOCTYPE html>
<html>
<head>
  <title>API Test</title>
</head>
<body>
  <button id="executeBtn">Befehl ausführen</button>
<script>
  document.getElementById('executeBtn').addEventListener('click', function() {
    fetch('http://localhost:5000/execute-command', { // Verwende absolute URL
      method: 'POST',
    })
    .then(response => response.json())
    .then(data => {
      console.log(data);
    })
    .catch(error => {
      console.error('Fehler:', error);
    });
  });
</script>
</body>
</html> 

Ich bekomme als Fehler von Firefox in der Konsole:

Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://localhost:5000/execute-command. (Grund: CORS-Anfrage schlug fehl). Statuscode: (null).

Fehler: TypeError: NetworkError when attempting to fetch resource

Entschuldigung wenn es offensichtlich ist, bin da noch sehr frisch und habe keine Lösung gefunden.

Netzwerk, HTML, Webseite, JavaScript, HTML5, Code, Netzwerktechnik, Port, Programmiersprache, Python, Webentwicklung, JSON, Flask
ist das schwieriger code in Java?

bin mit listen und doppelten liste, stacks und queues fertig, polymorphie fange ich gerade an, wie viele tage brauche ich, um diesen code zu verstehen bzw. selbser zu implementieren

public class HashTable {
    public Object[] hashTable;
    private int numCollisions;


    public int getNumCollisions() {
        return numCollisions;
    }


    public HashTable(int size){
        hashTable = new Object[size];
        numCollisions = 0;
    }


    public void add(Object element){
        int elementIndex = getHashValue(element)%hashTable.length;
        int index = elementIndex;
        while (hashTable[index] != null){
            numCollisions++;
            index = (index + 1)%hashTable.length;
            if (index == elementIndex){
                System.out.println("Full");
                return;
            }
        }
        hashTable[index] = element;
    }


    private int getHashValue(Object element) {
        return element.hashCode();
    }


    public boolean contains(Object element){
        int elementIndex = getHashValue(element)%hashTable.length;
        int index = elementIndex;
        while (hashTable[index] != null){
            if (element.equals(hashTable[index])){
                return true;
            }
            index = (index + 1)%hashTable.length;
            if (index == elementIndex) {
                return false;
            }
        }
        return false;
    }


    public void print(){
        for (int i = 0; i < hashTable.length;i++){
            System.out.println(hashTable[i]);
        }
    }
}


Java, Array, Code, Programmiersprache, Algorithmus

Meistgelesene Fragen zum Thema Code