Code Monkey home page Code Monkey logo

amonguscapture's Introduction

GitHub release

Localize

Invite Link

AutoMuteUs

AutoMuteUs is a Discord Bot to harness Among Us game data, and automatically mute/unmute players during games!

Requires amonguscapture to capture and relay game data.

Have any questions, concerns, bug reports, or just want to chat? Join our discord at https://discord.gg/ZkqZSWF!

Click the "invite me" badge in the header to invite the bot to your server, or click the GIF on the left.

All artwork for the bot has been generously provided by Smiles!

⚠️ Requirements ⚠️

  1. You must run the Capture application on your Windows PC for the bot to work! Any Among Us games that don't have a user running the capture software will not have automuting capabilities!
  2. The Capture application currently only supports the Steam, Epic Games, itch.io, and Microsoft Store releases of the game, but does not support beta or cracked versions.

Quickstart and Demo (click the image):

Quickstart

Usage and Commands

To start a bot game in the current channel, type the following slash command in Discord after inviting the bot:

/new
# Starts a game, and allows users to react to emojis to link to their in-game players

The bot will send you a private reply with a link that is used to sync the capture software to your game. It will also have a link to download the latest version of the capture software, if you don't have it already.

If you want to view command usage or see the available options, type /help in your Discord channel.

Commands

Command Description Example
/help Print help info and command usage
/new Start a new game in the current text channel
/refresh Remake the bot's status message entirely, in case it ends up too far up in the chat.
/pause Pause the bot, and don't let it automute anyone until unpaused.
/end End the game entirely, and stop tracking players. Unmutes all and resets state
/link Manually link a discord user to their in-game color /link @Soup cyan
/unlink Manually unlink a player /unlink @Soup
/settings View and change settings for the bot, such as the command prefix or mute behavior
/privacy View privacy and data collection information about the bot
/info View general info about the Bot
/map View an image of an in-game map in the text channel. Provide the name of the map, and if you want the detailed version /map skeld true
/stats View detailed stats about Among Us games played on the current server, or by a specific player /stats user view @Soup
/premium View information about AutoMuteUs Premium, and the current premium status of your server

Privacy

You can view privacy and data collection details for the Official Bot here.

Localization

AutoMuteUs now uses CrowdIn for Localization and translations (thanks @MatadorProBr)!

Help us translate the bot here:

Crowdin

To prepare any new strings for translation, first install goi18n v2.1.1 using the following command:

go install -v github.com/nicksnyder/go-i18n/v2/[email protected]

Then run the following command anytime new strings or translations are added:

goi18n extract -outdir locales

Self-Hosting

Self-hosting requires robust knowledge and troubleshooting capability for Docker/Docker-compose, unRAID, Heroku, and/or any other networking and routing config specific to your hosting solution.

As such, we recommend that the majority of users take advantage of our Verified bot. The link to invite our bot can be found here:

Invite Link

If you are certain that you would prefer to self-host the bot, please follow any of the instructions on automuteus/deploy.

Developing

Please refer to the instructions on automuteus/deploy.

Similar Projects

  • Imposter: Similar bot that uses private Discord channels instead of mute/deafen. Also uses a dummy player joining the game and "spectating" to get game information; no capture needed (although loses the 10th player slot).

  • AmongUsBot: Without their original Python program with a lot of the OCR/Discord functionality, I never would have even thought of this idea! Not currently maintained

  • amongcord: A great program for tracking player status and auto mute/unmute in Among Us. Their project works like a traditional Discord bot; very easy installation!

  • Silence Among Us: Another bot quite similar to this one, which also uses AmongUsCapture. Now in early-access with a publicly-hosted instance!

amonguscapture's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amonguscapture's Issues

double event are emitted

When i use amongUsCapture with websocket server (in node), all event are emitted dual time, it's normal ?
image

Am I allowed to make this public?

Hello,
thanks for creating such an awesome project open source!

I created an Discord Among Us Bot, which fit to my needs and in the programming language I use (C#).
So I was wondering if I would be allowed to publish "my" own version of the Among Us Bot, which is based on this project to determite in which state the game is.

Credits would obviously go to you, and this github source somewhere in the Discord Bot.

Thanks for answering.
Have a good day.

Transmit player co-ords?

Anyway this could also take account of the player-cords? I can see how one could add them to PlayerInfo if the offsets for them are known but have no clue how to get the offsets

Connection to the Bot not working

20:06:44 | Capture version: 2.5.0.0
20:06:46 | [DiscordHandler]: Trying to connect to discord
20:06:46 | [Discord.Net]: 21:06:46 Discord     Discord.Net v2.2.0 (API v6)
20:06:47 | [DiscordHandler]: Error: System.Net.Http.HttpRequestException: net_http_client_execution_error
 ---> System.IO.IOException: net_io_read
 ---> System.Security.Authentication.AuthenticationException: net_auth_SSPI
 ---> System.ComponentModel.Win32Exception (0x80090326): Das Format der empfangenen Nachricht war unerwartet oder fehlerhaft.
   Exception_EndOfInnerExceptionStack
   at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
   at System.Net.Security.SslStream.ReplyOnReAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Byte[] buffer)
   at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory`1 buffer)
   Exception_EndOfInnerExceptionStack
   at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory`1 buffer)
   at System.Net.Http.HttpConnection.FillAsync(Boolean async)
   at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync(Boolean async, Boolean foldedHeadersAllowed)
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   Exception_EndOfInnerExceptionStack
   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
   at Discord.Net.Rest.DefaultRestClient.SendInternalAsync(HttpRequestMessage request, CancellationToken cancelToken, Boolean headerOnly)
   at Discord.Net.Rest.DefaultRestClient.SendAsync(String method, String endpoint, CancellationToken cancelToken, Boolean headerOnly, String reason)
   at Discord.Net.Queue.RestRequest.SendAsync()
   at Discord.Net.Queue.RequestBucket.SendAsync(RestRequest request)
   at Discord.Net.Queue.RequestQueue.SendAsync(RestRequest request)
   at Discord.API.DiscordRestApiClient.SendInternalAsync(String method, String endpoint, RestRequest request)
   at Discord.API.DiscordRestApiClient.SendAsync[TResponse](String method, String endpoint, String bucketId, ClientBucketType clientBucket, RequestOptions options)
   at Discord.API.DiscordRestApiClient.GetVoiceRegionsAsync(RequestOptions options)
   at Discord.WebSocket.DiscordSocketClient.OnLoginAsync(TokenType tokenType, String token)
   at Discord.Rest.BaseDiscordClient.LoginInternalAsync(TokenType tokenType, String token, Boolean validateToken)
   at Discord.Rest.BaseDiscordClient.LoginInternalAsync(TokenType tokenType, String token, Boolean validateToken)
   at Discord.Rest.BaseDiscordClient.LoginAsync(TokenType tokenType, String token, Boolean validateToken)
   at AmongUsCapture.DiscordHandler.Init(String DiscordToken)

Self host token?

I saw this in the release notes:

"This release adds the ability to add your own token into the capture for increased performance (Like running a second bot without all the hassle)."

We'd love faster performance. Where do I get this token?

image

Failed to detect all players start out alive

I created a lobby, with 4 other accounts, and started the game. All the muting worked as expected, so I voted the imposter (Mr. Meme). It appears as though the capture program noticed the game ended (state change to lobby), then labelled Mr. Meme as dead.

I started a new game. The capture program still thinks Mr. Meme is dead, and treats them as such, leaving them unmuted at the very beginning of the game (and muting them during discussion).

Can we change the capture program to invalidate/update any cache of each player's state when we transition from LOBBY (game start)?

Connected to Among Us process (19328)
(2014511104)
Mr Meme: Joined
connect 059A7F
State changed to LOBBY
Mr Meme: ForceUpdated
Mr Meme 1: Joined
Mr Meme 2: Joined
Mr Meme 3: Joined
Mr Meme 4: Joined
State changed to TASKS
State changed to DISCUSSION
Mr Meme: Exiled
State changed to LOBBY
Mr Meme: Died
Mr Meme 1: Left
Mr Meme 2: Left
Mr Meme 3: Left
Mr Meme 4: Left
Mr Meme 1: Joined
Mr Meme 2: Joined
Mr Meme 3: Joined
Mr Meme 4: Joined
State changed to TASKS
dState changed to DISCUSSION
State changed to TASKS

Consider updating to game version v2020.10.22s

Hi everyone,
first I wanted to say thanks for this amazing software!

I'm using the currently latest version 2.4.1 and I just tried to install the latest beta version v2020.10.22s of the game.
It can't capture the game state correctly. I don't know if they will release this new version as it is right now, just consider you might need to update the memory addresses you read.

[Question] Using WinAPI/Native Process Module calls over Process.Modules

Hi. I'm working on a GTK/Linux port of 'amonguscapture', and I have a small question about how the memory reader is obtaining its shared library list.

From what I can tell, .NET Core will list all shared libraries (modules) attached to the program in the Process.Modules member, which when compared to the information I get from /proc/[pid]/maps, appears to be accurate. However, 'amonguscapture' appears to use the Windows native API calls to obtain a list of modules along with information.

I'm asking this because I'm determining the best course of action of pulling shared library locations from the Among Us process in Linux, and I want to know if there's a particular reason to use the OS native Module calls over the built-in list attached to Process.

I'm trying to keep the structure of the Linux memory reader as close as possible to the Windows one that already exists, so I want to know if there's a performance-based or other reason as to why we shouldn't trust 'Process.Modules'.

This websocket is not associated with any guilds

Ok so brief disclaimer I know nothing about programming.

I ran the discord.exe bot to make sure that the bot is online, my amongus capture is working fine and it shows in the capture that the game is being hosted etc however nothing is sent back to the actual discord chat, it's only updated inside the capture.. I'm thinking that this is because of the websocket issue but I dont know how to fix this. Help please

Feature request: Log mode

Hi folks,

thank you so much for creating this awesome software, I'll use in combination with the Silence Among Us Bot to play with buddies.

I wanted to keep track of my records as imposter / crewmate and thought it would be awesome to have a log mode, which would simply dump all the console output to a text file. This way, one could inspect the output to keep track of deaths, wins, losses, etc. (using some basic data analysis).

Is this something you would consider adding? I guess it could be as simple as an option in the settings for enabling the log and maybe a file location for the text file?

Edit: Another thought: as Among Us starts to get played competitively, I could also see a log as useful for keeping track of player statistics.

Will not update state

I am running an among us server with 4 people, I run this, but the state wont change at all ingame. All it does is just stay at the "MENU" state.

I am using it with the among us discord bot.

Connect Code Not Long Enough

The new among us discord has connect codes with more characters than the capture allows to input.

The capture allows 6, but the new discord bot creates an 8 character code.

Smaller Release

I noticed that the AmongUs.exe in https://github.com/denverquane/amonguscapture/releases is really large (>150MB) and takes on slow internet connections very long to download.
grafik

Possible improvements:

  • Upload the release as compressed file;
    A simple zip saves a lot of space (latest release >60%), with literally no effort to implement
    grafik
  • Try use Trimming; however this is experimental and can fail
    Edit: seems like this was already done: 9e7ac6b

Death state console output

Might it be a good idea to only print [PlayerChange]: Name: died after the game state has changed to discussion? A dishonest player running the capture could gain early notification of a death without having stumbled upon the body themselves.

[Question] What is the IPC functionality for?

What exactly does it do, and what exactly is it for? I've been trying to update my fork to master, and the IPC backend isn't supported on Linux at all.

Is this safe to ignore, and can it be omitted/bypassed without any issue?

Capture code is cleared when connect button is clicked

When using manual connection rather than URL, I enter the connection code, and when I click Connect, the capture code is cleared instead of sending it to the server.

In the log:
[ClientSocket]: Connection code () sent to server.

Looks like it's in the ConnectButton_Click handler
ConnectCodeBox.Clear();

Will there be a version for mobile?

There's a lot of mobile players for this, and I have a play group that is strictly mobile. Hoping for the cross-play when the revised Among Us comes out, but I've tested this and it works perfectly on desktop! Kudos to you guys.

Latest update on 11/2/2020 breaks the capture?

Was looking into trying a small project with this capture project.

It looks like with the latest update today we are unable to read the correct game state?
Or is this something where we just need to update where we read the game state?

Issue with .NET Core

I've got '.Net Core' installed, but it still shows up, that I need to install it.

I tried to uninstall it and installed the 'dotnet-sdk-3.0.103-win-x86.exe'.

It still didn't worked, so I uninstalled it again and installed the 'dotnet-sdk-2.1.810-win-x86.exe', but it is still not working. I also tried to install and open it as administrator, but nothing is working.

Can anyone help me maybe?

Stuck on "Loading"

I closed the program while it was crashing once, and now from here on it gets stuck on "loading". I've even tried downloading it again and that doesn't work.

Text same colour as background

Hi,

Thanks for the work on the app amazing work.

Version: 2.4.1

Just a little bug when dark mode is disabled the text for "Game status:" and "Game code:" is white so it blends in with the background.

Todo: Auto updater.

With the integration of the CarbonCI projected, all exe files it puts out are versioned. The Capture program can access its own program by reflection.

Do not show died players while in task state

When not in debug mode, the console shouldn't log the dead players while in Task state. It leaks information to the player using "Among us capture". The log should be displayed only once the state is changed to discuss.

When in debug mode, IMHO, the log should display as soon as the player die is detected.

New settings implementation throws 'Newtonsoft.Json.JsonException' if Alias contains spaces

While I was testing my modifications for the ProcessMemory rework, I discovered that the configuration engine does not like it when the Alias for a configuration entry contains a space.

I discovered this when attempting to access a field that uses the new GameOffsets configuration value:

Newtonsoft.Json.JsonException: 'Unexpected character while parsing path: '

Changing:

[Option(Alias = "Client Offset", DefaultValue = 0x1468840)]
        int AmongUsClientOffset { get; set; }```

to:

[Option(Alias = "ClientOffset", DefaultValue = 0x1468840)]
        int AmongUsClientOffset { get; set; }

eliminates this problem. This has to be done for each Alias that has a space in it.

Self contained distributable

Hey all, first off thanks for this tool, it's awesome! Really a great experience, and has saved me a lot of time.

With .NET 5 coming out coming out in a few weeks, I thought it would be a good idea to upgrade and take advantage of the single executable deployment option, with assembly trimming. Ultimately the experience will be a single exe, not requiring a download of the runtime first, just like the Go discord side of things.

For it to work, we'll need to lose the MetroModernUI package, but I see @CarbonNeuron has a branch with WPF in the works. So I'll hold off for that to land, the create a PR following that.

Let me know what you think. Happy to help out on other stuff where I can too 🙂

New version support

The new version stuck on menu status. Prev version works fine for the 2020.9.22

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.