目前我正在开发一个不和谐的机器人,它正在过滤消息。当尝试过滤包含在其他单词中的单词时,会出现问题,从而触发重复消息。
\n这是我的filter.txt:
\nsad\nsadness\nsadnesses\n
Run Code Online (Sandbox Code Playgroud)\n由于“悲伤”也可以在“悲伤”中找到,因此每当写“悲伤”时,我都会得到“悲伤”的误报。
\n是否可以仅检测消息中的确切字符串?就像:I want to be happy, because sadness is bad
\xe2\x86\x92 '只检测悲伤'
我希望你明白我的意思。
\n代码:
\npublic void onGuildMessageReceived(GuildMessageReceivedEvent e) {\n File file = new File("src/filter.txt");\n try {\n BufferedReader br = new BufferedReader(new FileReader(file));\n String line;\n while ((line = br.readLine()) != null) {\n if(!line.startsWith("#")) {\n if(e.getMessage().getContentRaw().contains(line)) {\n User user = e.getJDA().getUserById(e.getAuthor().getIdLong());\n e.getMessage().delete().queue();\n user.openPrivateChannel().queue(privateChannel -> {\n privateChannel.sendMessage("Bitte achte auf deine Sprache!").queue();\n });\n } \n }\n }\n } catch (IOException e1) {}\n}\n …
Run Code Online (Sandbox Code Playgroud) 我见过很多关于欧拉角和四元数之间转换的问题,但我从未找到任何可行的解决方案。也许你可以帮助我为什么这没有返回正确的值。我需要四元数(XYZ)到欧拉角之间的转换,这是我当前使用的代码:
public static Vector3 Q2E(Quaternion q) // Returns the XYZ in ZXY
{
Vector3 angles;
angles.X = (float)Math.Atan2(2 * (q.W * q.X + q.Y * q.Z), 1 - 2 * (q.X * q.X + q.Y * q.Y));
if (Math.Abs(2 * (q.W * q.Y - q.Z * q.X)) >= 1) angles.Y = (float)Math.CopySign(Math.PI / 2, 2 * (q.W * q.Y - q.Z * q.X));
else angles.Y = (float)Math.Asin(2 * (q.W * q.Y - q.Z * q.X));
angles.Z = (float)Math.Atan2(2 * (q.W …
Run Code Online (Sandbox Code Playgroud)