Discord.NET - Bot immediately disconnects after joining voice channel - discord

I have all of the libraries (libopus.dll and libsodium.dll), I have FFMPEG and an audio file in my execution path, but still the bot immediately disconnects after joining the channel. Why is this happening and how do I fix it?
EDIT: I use this sample for audio: https://gist.github.com/Joe4evr/773d3ce6cc10dbea6924d59bbfa3c62a

With Discord.Net you have to rename libopus.dll to opus.dll.

These are a few things I pulled from the official Discord API guild.
Windows 64-bit: https://dsharpplus.emzi0767.com/natives/vnext_natives_win32_x64.zip
Windows 32-bit: https://dsharpplus.emzi0767.com/natives/vnext_natives_win32_x86.zip
FFmpeg for Windows: https://dsharpplus.emzi0767.com/natives/index.html#ffmpeg-for-windows
Other OSes:
GNU/Linux: https://dsharpplus.emzi0767.com/articles/vnext_setup.html#gnulinux-1
OS X: https://dsharpplus.emzi0767.com/articles/vnext_setup.html#mac-os-x-1
FreeBSD: https://dsharpplus.emzi0767.com/articles/vnext_setup.html#freebsd
Note for D.NET users: You need to rename libopus.dll to opus.dll before use, otherwise audio client will still complain about missing libraries.

For starters, Foxbot has the libsodium and opus libraries for windows ready to go. These are the ones I use in my personal audio bot as well.
Now, there is a slight difference between where you have to locate your dll's based on what you are doing.
During deployed runs, aka published project or running it from the console through your bin/insert path to env etc directly, discord.net looks for the libsodium/opus dll's in your bin/insert path to env etc.
However, during debug runs with visual studio and the likes, instead of looking in your bin/insert path to env etc, it will look in the root folder of your project. Hence for this scenario, you will also need to include the libsodium and opus dll's in the folder where your .csproj is located.
As a personal preference, I also do the same for the ffmpeg.exe. Including this both in deployed bin folders, and having a copy besides the csproj.

Related

Set up kenlm for Windows

The official website makes it pretty clear that there is no support for kenlm in Windows. There is a Windows tag at the github repository but it seems to be maintained by few random contributors then and there.
How to set up kenlm for Windows then?
The new DeepSpeech PlayBook also includes instructions for setting up a Docker image and running training from within a Docker container. If you have Docker on Windows, this might be another solution.
The information for building a new Scorer is still in a PR, but may also be useful.
The solution is to use Ubuntu in Windows through Windows Subsystem for Linux
Get WSL for Windows
From your ubuntu bash navigate to the folder where you want to do the setup. You can access the Windows file system from the /mnt/c/ folder, which you can find at the root directory.
From there simply follow the official instructions, that is clone the git repo, and run cmake .. & make -j2 in order to build the project (after first making the necessary installations in your Ubuntu system).
Obviously, you must train the models or scorers using the Linux bash. You can also use these models from Windows using the kenlm python library.
E.g.
The two steps to build a scorer for the deepspeech-model as described here should be executed from your Ubuntu system. But after you have the scorer you should be able to run the command
deepspeech --model deepspeech-0.9.3-models.pbmm --scorer kenlm.scorer --audio audio.wav
from Windows. However, once you have WSL there's no need to do this work from Windows. Things will work nicely #your Ubuntu system.
I've faced the same problem and solved it by building kenlm wheel from Cygwin terminal as home page advices (pip wheel pypi-kenlm).
I've also uploaded wheel to pypi called kenlm-cygwin, but it's only python3.7.

Problems deploying SecureInput MS Edge Extension native messaging sample

I am trying out SecureInput extension sample that demonstrates NativeMessaging capabilities in MS Edge browser extensions and I running into problems deploying the extension after building using VS community edition 2017. I don’t have Universal Windows Platform Apps development experience, so I apologize if there is a pretty obvious answer I am not aware of. But following readme.md in the sample doesn’t work, so posting this question here...
https://github.com/MicrosoftEdge/MicrosoftEdge-Extensions-Demos/tree/master/SecureInput
Steps followed…
Turned on developer mode in “Use Developer Features”
Turned on Enable extension developer features in Edge browser’s about:flags.
Downloaded the sample as a zip file to the local machine.
Copied SecureInput.html to my local webserver
Loaded SecureInput.sln in VS
community edition 2017 Out of two options.. InProc or OutOfProc, I
wanted to try InProc. So needed to select Project in
NativeMessagingHostInProcess in Build Configuration manager. Other
settings used... Debug - configuration; Any CPU – Active solution
platform; NativeMessagingHostInProcess – x64 project platform as I
was using 64 bit Windows and edge running as a 64 bit process as
well; Left rest as default.
With Debug Configuration and Any CPU Solution platform built the entire solution.
Deployment Summary
Built Entire SecureInput solution.
Installed AppX package by running
Add-AppxPackage -register [PathtoSecureInputSolutionFolder] NativeMessagingHostInProcess\bin\x64\Debug\AppxManifest.xml
No errors during building or while running Add-AppXPackage from elevated Power shell prompt.
Expected: At this point EdgeBrowser->MoreOptions->Extensions should list extension installed by AppX package (Deployment Summary/Step 2). =>> Doesn’t happen.
Few other details
I am using 64 bit Win 10 creators build (1703 – OS build 16063.128)
I am suspecting Add-AppxPackage failed to add the extension silently. Verbose flag doesn’t give me any clues either.
Get-AppXPackage shows newly added AppX package.
Name : ae24a957-5239-43b2-a36c-b96805a58ade
Publisher : CN=msft
Architecture : X64
ResourceId :
Version : 1.0.0.0
PackageFullName : ae24a957-5239-43b2-a36c-b96805a58ade_1.0.0.0_x64__2yx4q2bk84nj4
InstallLocation : [PathtoSecureInputSolutionFolder] \NativeMessagingHostInProcess\bin\x64\Debug
IsFramework : False
PackageFamilyName : ae24a957-5239-43b2-a36c-b96805a58ade_2yx4q2bk84nj4 PublisherId : 2yx4q2bk84nj4
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : True
IsPartiallyStaged : False
I would like to know if anyone got this sample working. If Microsoft Edge folks are monitoring stackoverflow, I really appreciate if someone can jump in to help your early adopters like me. :-)
With offline help from Chee Chen, we were able to figure out why SecureInput was not working. My sincere thanks to him for going out of his way to help. In my specific case, here are the things that went wrong.
URL manifest.json gives permissions to is case sensitive. I had a typo when I first entered the URL in edge browser very first time.. I typed in as SecureInput.html. Try cleaning the cache if you see that using lower case secureinput.html doesn't help.
When instructions didn't work right first time, I used Add-AppxPackage way of deploying the Extension. While doing that, I picked AppxManifest file in NativeMessagingHostInProcess\bin\x64\Debug\AppxManifest.xml instead of NativeMessagingHostInProcess\bin\x64\Debug\AppX\AppxManifest.xml. Something to watch out for and if you make the same mistake, make sure you uninstall the appx package completely and start all over again.
So here are my supplemental instructions for others trying the sample :-)
Make sure you selected right Platform as per your target test machine. Edge runs as 64 bit process so your extension needs to be targeted at that platform.
Make sure right AppServiceName is selected in PasswordInputProtection->Program.cs and Extension->background.js
I think PasswordInputProtection.csproj has a hardcoded Program files (x86) in its path, which will break if you try the sample on 32 bit machine. Edit the project file in notepad and fix it before you try.
Ensure NativeMessagingHost project's Output paths are correctly configured... It needs to be "bin\[Platform]\[Configuration]\AppX\" and not "bin\[Platform]\[Configuration]\"
Avoid typos if you can, because I see very little feedback or verbose logs on why things are not working.
Have you tried following the deployment steps in the documentation? The actual steps and ordering is important:
Build and deploy the NativeMessagingHostinProcess UWP app.
This will generate:
Necessary binaries and files needed for the UWP app.
The AppX folder.
The AppXManifest.xml based on the content of package.manifest. (The content of package.manifest in this sample has been edited to include the necessary entries for Edge extensions).
Build the PasswordInputProtection Desktop Bridge.
This will:
Build the binaries for this project
Trigger a post-build event that will copy the output of the exe to the AppX folder and copy the Extension folder to the AppX folder.
Now that the files are all ready to go, you will need to register the AppX.
There are two ways to accomplish this:
Run Add-AppxPackage from PowerShell: Add-AppxPackage -register [Path to AppX folder]\AppxManifest.xml
OR
Deploy the NativeMessagingHostInProcess project. Visual Studio will run the same PowerShell script to register the AppX from the folder.

How to use CHE_EXTRA_VOLUME_MOUNT?

Use Case
The code that I wish to edit in che is downloaded from a private SVN repository and uses a private nexus repository for maven dependencies. Due to this I need to use my custom settings.xml from "C:\Users\.m2".
It would be good to use the local maven repository too, hence the approach of creating a custom dockerfile that adds settings.xml was not used.
Setup
I created a user environment variable "CHE_EXTRA_VOLUME_MOUNT" with the value "~/.m2:/home/user/.m2".
I can see the env variable from "Docker Quickstart Terminal".
Environment
OS: Windows 7
Docker version: 1.12.6, build 78d1802
Docker image: eclipse/che-server:5.0.0
Problem
Can't see the mount path "/home/user/.m2" in any workspace.
Can someone please help me with this use case?
I see a couple issues. First, in the che.env file, you should be modifying CHE_WORKSPACE_VOLUME. The CHE_EXTRA_VOLUME_MOUNT is an older name that applied to the 4.x releases.
Second, the mount path you are using. The value that you provided on the mount path is likely not going to work well if it's on Windows 7. This is because you are using Boot2Docker on that system, and so VirtualBox limits files that can be mounted to those that exist as a subfolder of %userprofile%.
So:
1. First make sure that c:\Users\.m2 is part of this subfolder, and then:
2. Use the absolute path to your .m2 folder in the mount in the che.env:
CHE_WORKSPACE_VOLUME=/C/Users/<user_name>/.m2:/home/user/.m2
This funky path naming for volume mounts is a limitation in how the Docker client can understand volume mounts if you are using it on the batch shell.
A matching answer is posted on Che's support site - https://github.com/eclipse/che/issues/3888
Looks like it is a bug in eclipse che. You can create an issue at https://github.com/eclipse/che/issues

Run .bat as a Windows Service

I'm here again with another case that is getting me out my mind.
So, this is happening, I'm trying to run an executable java class(.jar) as a Windows Service, and all my attempts failed so far. To make it a little easier, I turned my jar into a batch file, wich only executes the jar in background, here is the code:
start "" javaw -jar C:\LocalService.jar
The batch works fine. However I have tried to install this batch as a service by using the next line in cmd:
sc create "LocalService" binPath= "C:\LocalService.bat"
The Service installs correctly, but as soon as I try to start it, it pops up an error (The code error is 1053, says something about the service did not start correctly)
Also, I have try with a software called NSSM (non-sucking service manager) It installs fine too, but the service does not start either.
Do you guys know what am I missing?
By the way, I'm doing all this on Windows 7 Professional.
Thanks!
thanks for your comments
Both tools didnt work for me, sadly. However I was able to do it with a software called Java Service Wrapper. This is not a free software, so I needed to buy a license to get it to work.
The steps were simple:
1.-Create a folder with the name of the service, then inside add 4 folders: lib,bin,logs,conf
2.-On the lib folder you have to copy your jar and also the wrapper.jar and wrapper.dll (these last two are in the zip you download from the website)
3.-Copy 4 files to the bin folder: InstallApp-NT.bat.in, App.bat.in, UnintstallApp-NT.bat.in and wrapper.exe (this last one is the one that defines your license, if you can get a file wrapper.exe from somebody else who had paid a license it will work fine. These file also came in the zip from the website) Remove the .in from the batch files
4.-The most tricky step is this: You have to copy from the wrapper's folder called conf a file called wrapper.conf.in Remove the .in extension and edit it with a tex editor. The most important lines you have to edit are:
wrapper.java.command=C:\Program Files (x86)\Java\jre7\bin\java //Specify JRE Path. Will work with eviroment variable
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperJarApp //Choosing this class means your are using a .jar file to execute when the service starts
wrapper.java.classpath.1=C:\LocalService\lib\wrapper.jar //This one is constant.
wrapper.java.classpath.2=C:\LocalService\lib\LocalService.jar //This is the path to your executable jar
wrapper.java.library.path.1=C:\LocalService\lib //Path to your own lib folder (the you created at the begining)
wrapper.app.parameter.1=C:\LocalService\lib\LocalService.jar // again the path to your jar
Then just execute the InstallApp-NT.bat and start the service and your are done
It worked to me with absolute paths, however according to documentation it will work fine with relative path too.
This is how I solved my problem and I hope someone with the same issue will find this helpful
See you next time!

Golang GAE SDK on XP: Do I have to install it? Are there other ways to use the SDK on XP?

The introduction says:
Follow the instructions on the download page to install the SDK on
your computer.
But the download page has no any instructions about how to install and what to do next. Only links.
All I found is this link to WindowsInstallation:
Download and run the latest Windows installer from our downloads page
Must Windows XP users use the installer? Can they just download the Linux version and unzip it? I'd like to have a portable version rather than one that installs EXEs and registry settings, etc.
Also I do not understand what exactly do I have to choose. There are:
Google App Engine SDK 1.7.7 (.msi file)
Google App Engine SDK for Go 1.7.7 (.zip file)
I've downloaded the second. Do I need to download and install the first too? Just adding the second to the PATH and develop is exactly what I want. Is this enough?
The Linux version will have executables compiled for Linux, so you can't run those on Windows (unless you run linux under a virtual machine with VirtualBox, VMWare or similar).
No, you do not need to install something to run Go GAE on XP.
I just downloaded go_appengine_sdk_windows_386-1.7.7.zip from
here.
Unzipped it in C:\go_appengine-1.7.7
Added the folder in my PATH. The main goal is to have these files
dev_appserver.py and appcfg.py in the PATH. It is written
here. Not a must, though, only for convenience.
Installed Python 2.7.4. Only works with 2.7.4. At first I installed
the latest 3.3.1 but had to change it to 2.7.4 because Go GAE cannot
run, throws an error.
And that's all. Just created a sample script, ran C:\>dev_appserver.py myapp and opened my sample app in localhost:8080.
PROFIT.
But:
Do not know, though, what benefits the installer offer. I didn't test it.
That was just a sample script. Maybe some serious development requires installation.

Resources