Merge remote-tracking branch 'refs/remotes/Kwoth/1.0' into 1.0-fearnlj01
This commit is contained in:
commit
eeb0c4b44a
@ -14,11 +14,13 @@ Command and aliases | Description | Usage
|
|||||||
`.ban` `.b` | Bans a user by ID or name with an optional message. **Requires BanMembers server permission.** | `.b "@some Guy" Your behaviour is toxic.`
|
`.ban` `.b` | Bans a user by ID or name with an optional message. **Requires BanMembers server permission.** | `.b "@some Guy" Your behaviour is toxic.`
|
||||||
`.softban` `.sb` | Bans and then unbans a user by ID or name with an optional message. **Requires BanMembers server permission.** | `.sb "@some Guy" Your behaviour is toxic.`
|
`.softban` `.sb` | Bans and then unbans a user by ID or name with an optional message. **Requires BanMembers server permission.** | `.sb "@some Guy" Your behaviour is toxic.`
|
||||||
`.kick` `.k` | Kicks a mentioned user. **Requires KickMembers server permission.** | `.k "@some Guy" Your behaviour is toxic.`
|
`.kick` `.k` | Kicks a mentioned user. **Requires KickMembers server permission.** | `.k "@some Guy" Your behaviour is toxic.`
|
||||||
`.setmuterole` | Sets a name of the role which will be assigned to people who should be muted. Default is nadeko-mute. After specifying this role, restart commands which use mute as punishment. | `.setmuterole Silenced`
|
`.setmuterole` | Sets a name of the role which will be assigned to people who should be muted. Default is nadeko-mute. After specifying this role, restart commands which use mute as punishment. **Requires ManageRoles server permission.** | `.setmuterole Silenced`
|
||||||
`.mute` | Mutes a mentioned user both fom speaking and chatting. **Requires MuteMembers server permission.** | `.mute @Someone`
|
`.mute` | Mutes a mentioned user both from speaking and chatting. **Requires ManageRoles server permission.** **Requires MuteMembers server permission.** | `.mute @Someone`
|
||||||
`.textmute` | Prevents a mentioned user from chatting in text channels. **Requires MuteMembers server permission.** | `.textmute @Someone`
|
`.unmute` | Unmutes a mentioned user previously muted with `.mute` command. **Requires ManageRoles server permission.** **Requires MuteMembers server permission.** | `.unmute @Someone`
|
||||||
|
`.chatmute` | Prevents a mentioned user from chatting in text channels. **Requires ManageRoles server permission.** | `.chatmute @Someone`
|
||||||
|
`.chatunmute` | Removes a mute role previously set on a mentioned user with `.chatmute` which prevented him from chatting in text channels. **Requires ManageRoles server permission.** | `.chatunmute @Someone`
|
||||||
`.voicemute` | Prevents a mentioned user from speaking in voice channels. **Requires MuteMembers server permission.** | `.voicemute @Someone`
|
`.voicemute` | Prevents a mentioned user from speaking in voice channels. **Requires MuteMembers server permission.** | `.voicemute @Someone`
|
||||||
`.voiceunmute` | Gives a previously voice-muted user a permission to speak. **Requires MuteMembers server permission.** | `.unmute @Someguy`
|
`.voiceunmute` | Gives a previously voice-muted user a permission to speak. **Requires MuteMembers server permission.** | `.voiceunmute @Someguy`
|
||||||
`.deafen` `.deaf` | Deafens mentioned user or users. **Requires DeafenMembers server permission.** | `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"`
|
`.deafen` `.deaf` | Deafens mentioned user or users. **Requires DeafenMembers server permission.** | `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"`
|
||||||
`.undeafen` `.undef` | Undeafens mentioned user or users. **Requires DeafenMembers server permission.** | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"`
|
`.undeafen` `.undef` | Undeafens mentioned user or users. **Requires DeafenMembers server permission.** | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"`
|
||||||
`.delvoichanl` `.dvch` | Deletes a voice channel with a given name. **Requires ManageChannels server permission.** | `.dvch VoiceChannelName`
|
`.delvoichanl` `.dvch` | Deletes a voice channel with a given name. **Requires ManageChannels server permission.** | `.dvch VoiceChannelName`
|
||||||
@ -28,10 +30,11 @@ Command and aliases | Description | Usage
|
|||||||
`.settopic` `.st` | Sets a topic on the current channel. **Requires ManageChannels server permission.** | `.st My new topic`
|
`.settopic` `.st` | Sets a topic on the current channel. **Requires ManageChannels server permission.** | `.st My new topic`
|
||||||
`.setchanlname` `.schn` | Changes the name of the current channel. **Requires ManageChannels server permission.** | `.schn NewName`
|
`.setchanlname` `.schn` | Changes the name of the current channel. **Requires ManageChannels server permission.** | `.schn NewName`
|
||||||
`.prune` `.clr` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X messages from the channel (up to 100)`.prune @Someone` removes all Someone's messages in the last 100 messages.`.prune @Someone X` removes last X 'Someone's' messages in the channel. | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X`
|
`.prune` `.clr` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X messages from the channel (up to 100)`.prune @Someone` removes all Someone's messages in the last 100 messages.`.prune @Someone X` removes last X 'Someone's' messages in the channel. | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X`
|
||||||
`.die` | Shuts the bot down. **Bot owner only.** | `@NadekoBot die`
|
`.die` | Shuts the bot down. **Bot owner only.** | `.die`
|
||||||
`.setname` `.newnm` | Gives the bot a new name. **Bot owner only.** | `.newnm BotName`
|
`.setname` `.newnm` | Gives the bot a new name. **Bot owner only.** | `.newnm BotName`
|
||||||
`.setavatar` `.setav` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot owner only.** | `.setav http://i.imgur.com/xTG3a1I.jpg`
|
`.setavatar` `.setav` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot owner only.** | `.setav http://i.imgur.com/xTG3a1I.jpg`
|
||||||
`.setgame` | Sets the bots game. **Bot owner only.** | `.setgame Playing with kwoth`
|
`.setgame` | Sets the bots game. **Bot owner only.** | `.setgame with snakes`
|
||||||
|
`.setstream` | Sets the bots stream. First argument is the twitch link, second argument is stream name. **Bot owner only.** | `.setstream https://www.twitch.tv/masterkwoth Developing Nakedo`
|
||||||
`.send` | Sends a message to someone on a different server through the bot. Separate server and channel/user ids with `|` and prepend channel id with `c:` and user id with `u:`. **Bot owner only.** | `.send serverid|c:channelid` or `.send serverid|u:userid`
|
`.send` | Sends a message to someone on a different server through the bot. Separate server and channel/user ids with `|` and prepend channel id with `c:` and user id with `u:`. **Bot owner only.** | `.send serverid|c:channelid` or `.send serverid|u:userid`
|
||||||
`.announce` | Sends a message to all servers' general channel bot is connected to. **Bot owner only.** | `.announce Useless spam`
|
`.announce` | Sends a message to all servers' general channel bot is connected to. **Bot owner only.** | `.announce Useless spam`
|
||||||
`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot owner only.** | `.savechat 150`
|
`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot owner only.** | `.savechat 150`
|
||||||
@ -58,6 +61,7 @@ Command and aliases | Description | Usage
|
|||||||
`.listplaying` `.lipl` | Lists all playing statuses with their corresponding number. **Bot owner only.** | `.lipl`
|
`.listplaying` `.lipl` | Lists all playing statuses with their corresponding number. **Bot owner only.** | `.lipl`
|
||||||
`.removeplaying` `.rmpl` `.repl` | Removes a playing string on a given number. **Bot owner only.** | `.rmpl`
|
`.removeplaying` `.rmpl` `.repl` | Removes a playing string on a given number. **Bot owner only.** | `.rmpl`
|
||||||
`.slowmode` | Toggles slowmode. Disable by specifying no parameters. To enable, specify a number of messages each user can send, and an interval in seconds. For example 1 message every 5 seconds. **Requires ManageMessages server permission.** | `.slowmode 1 5` or `.slowmode`
|
`.slowmode` | Toggles slowmode. Disable by specifying no parameters. To enable, specify a number of messages each user can send, and an interval in seconds. For example 1 message every 5 seconds. **Requires ManageMessages server permission.** | `.slowmode 1 5` or `.slowmode`
|
||||||
|
`.adsarm` | Toggles the automatic deletion of confirmations for .iam and .iamn commands. **Requires ManageMessages server permission.** | `.adsarm`
|
||||||
`.asar` | Adds a role to the list of self-assignable roles. **Requires ManageRoles server permission.** | `.asar Gamer`
|
`.asar` | Adds a role to the list of self-assignable roles. **Requires ManageRoles server permission.** | `.asar Gamer`
|
||||||
`.rsar` | Removes a specified role from the list of self-assignable roles. **Requires ManageRoles server permission.** | `.rsar`
|
`.rsar` | Removes a specified role from the list of self-assignable roles. **Requires ManageRoles server permission.** | `.rsar`
|
||||||
`.lsar` | Lists all self-assignable roles. | `.lsar`
|
`.lsar` | Lists all self-assignable roles. | `.lsar`
|
||||||
@ -101,21 +105,21 @@ Command and aliases | Description | Usage
|
|||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
----------------|--------------|-------
|
----------------|--------------|-------
|
||||||
`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role. | `$raffle` or `$raffle RoleName`
|
`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role. | `$raffle` or `$raffle RoleName`
|
||||||
`$cash` `$$$` | Check how much NadekoFlowers a person has. (Defaults to yourself) | `$$$` or `$$$ @SomeGuy`
|
`$cash` `$$$` | Check how much currency a person has. (Defaults to yourself) | `$$$` or `$$$ @SomeGuy`
|
||||||
`$give` | Give someone a certain amount of currency. | `$give 1 "@SomeGuy"`
|
`$give` | Give someone a certain amount of currency. | `$give 1 "@SomeGuy"`
|
||||||
`$award` | Awards someone a certain amount of currency. **Bot owner only.** | `$award 100 @person`
|
`$award` | Awards someone a certain amount of currency. You can also specify a role name to award currency to all users in a role. **Bot owner only.** | `$award 100 @person` or `$award 5 Role Of Gamblers`
|
||||||
`$take` | Takes a certain amount of flowers from someone. **Bot owner only.** | `$take 1 "@someguy"`
|
`$take` | Takes a certain amount of currency from someone. **Bot owner only.** | `$take 1 "@someguy"`
|
||||||
`$betroll` `$br` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. | `$br 5`
|
`$betroll` `$br` | Bets a certain amount of currency and rolls a dice. Rolling over 66 yields x2 of your currency, over 90 - x3 and 100 x10. | `$br 5`
|
||||||
`$leaderboard` `$lb` | Displays bot currency leaderboard. | `$lb`
|
`$leaderboard` `$lb` | Displays bot currency leaderboard. | `$lb`
|
||||||
`$race` | Starts a new animal race. | `$race`
|
`$race` | Starts a new animal race. | `$race`
|
||||||
`$joinrace` `$jr` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. | `$jr` or `$jr 5`
|
`$joinrace` `$jr` | Joins a new race. You can specify an amount of currency for betting (optional). You will get YourBet*(participants-1) back if you win. | `$jr` or `$jr 5`
|
||||||
`$roll` | Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice. If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `$roll` or `$roll 7` or `$roll 3d5`
|
`$roll` | Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice. If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `$roll` or `$roll 7` or `$roll 3d5`
|
||||||
`$rolluo` | Rolls X normal dice (up to 30) unordered. If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `$rolluo` or `$rolluo 7` or `$rolluo 3d5`
|
`$rolluo` | Rolls X normal dice (up to 30) unordered. If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `$rolluo` or `$rolluo 7` or `$rolluo 3d5`
|
||||||
`$nroll` | Rolls in a given range. | `$nroll 5` (rolls 0-5) or `$nroll 5-15`
|
`$nroll` | Rolls in a given range. | `$nroll 5` (rolls 0-5) or `$nroll 5-15`
|
||||||
`$draw` | Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck. | `$draw` or `$draw 5`
|
`$draw` | Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck. | `$draw` or `$draw 5`
|
||||||
`$shuffle` `$sh` | Reshuffles all cards back into the deck. | `$sh`
|
`$shuffle` `$sh` | Reshuffles all cards back into the deck. | `$sh`
|
||||||
`$flip` | Flips coin(s) - heads or tails, and shows an image. | `$flip` or `$flip 3`
|
`$flip` | Flips coin(s) - heads or tails, and shows an image. | `$flip` or `$flip 3`
|
||||||
`$betflip` `$bf` | Bet to guess will the result be heads or tails. Guessing awards you double flowers you've bet. | `$bf 5 heads` or `$bf 3 t`
|
`$betflip` `$bf` | Bet to guess will the result be heads or tails. Guessing awards you 1.8x the currency you've bet. | `$bf 5 heads` or `$bf 3 t`
|
||||||
|
|
||||||
### Games
|
### Games
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
@ -125,15 +129,16 @@ Command and aliases | Description | Usage
|
|||||||
`>rps` | Play a game of rocket paperclip scissors with Nadeko. | `>rps scissors`
|
`>rps` | Play a game of rocket paperclip scissors with Nadeko. | `>rps scissors`
|
||||||
`>linux` | Prints a customizable Linux interjection | `>linux Spyware Windows`
|
`>linux` | Prints a customizable Linux interjection | `>linux Spyware Windows`
|
||||||
`>leet` | Converts a text to leetspeak with 6 (1-6) severity levels | `>leet 3 Hello`
|
`>leet` | Converts a text to leetspeak with 6 (1-6) severity levels | `>leet 3 Hello`
|
||||||
`>poll` | Creates a poll, only person who has manage server permission can do it. | `>poll Question?;Answer1;Answ 2;A_3`
|
`>poll` | Creates a poll which requires users to send the number of the voting option to the bot. **Requires ManageMessages server permission.** | `>poll Question?;Answer1;Answ 2;A_3`
|
||||||
`>pollend` | Stops active poll on this server and prints the results in this channel. | `>pollend`
|
`>publicpoll` `>ppoll` | Creates a public poll which requires users to type a number of the voting option in the channel command is ran in. **Requires ManageMessages server permission.** | `>ppoll Question?;Answer1;Answ 2;A_3`
|
||||||
`>pick` | Picks a flower planted in this channel. | `>pick`
|
`>pollend` | Stops active poll on this server and prints the results in this channel. **Requires ManageMessages server permission.** | `>pollend`
|
||||||
`>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) | `>plant`
|
`>pick` | Picks the currency planted in this channel. | `>pick`
|
||||||
`>gencurrency` `>gc` | Toggles currency generation on this channel. Every posted message will have chance to spawn a NadekoFlower. Chance is specified by the Bot Owner. (default is 2%) **Requires ManageMessages server permission.** | `>gc`
|
`>plant` | Spend a unit of currency to plant it in this channel. (If bot is restarted or crashes, the currency will be lost) | `>plant`
|
||||||
|
`>gencurrency` `>gc` | Toggles currency generation on this channel. Every posted message will have chance to spawn currency. Chance is specified by the Bot Owner. (default is 2%) **Requires ManageMessages server permission.** | `>gc`
|
||||||
`>typestart` | Starts a typing contest. | `>typestart`
|
`>typestart` | Starts a typing contest. | `>typestart`
|
||||||
`>typestop` | Stops a typing contest on the current channel. | `>typestop`
|
`>typestop` | Stops a typing contest on the current channel. | `>typestop`
|
||||||
`>typeadd` | Adds a new article to the typing contest. **Bot owner only.** | `>typeadd wordswords`
|
`>typeadd` | Adds a new article to the typing contest. **Bot owner only.** | `>typeadd wordswords`
|
||||||
`>trivia` `>t` | Starts a game of trivia. You can add nohint to prevent hints.First player to get to 10 points wins by default. You can specify a different number. 30 seconds per question. | `>t nohint` or `>t 5 nohint`
|
`>trivia` `>t` | Starts a game of trivia. You can add nohint to prevent hints.First player to get to 10 points wins by default. You can specify a different number. 30 seconds per question. | `>t` or `>t 5 nohint`
|
||||||
`>tl` | Shows a current trivia leaderboard. | `>tl`
|
`>tl` | Shows a current trivia leaderboard. | `>tl`
|
||||||
`>tq` | Quits current trivia after current question. | `>tq`
|
`>tq` | Quits current trivia after current question. | `>tq`
|
||||||
|
|
||||||
@ -199,8 +204,8 @@ Command and aliases | Description | Usage
|
|||||||
`;verbose` `;v` | Sets whether to show when a command/module is blocked. | `;verbose true`
|
`;verbose` `;v` | Sets whether to show when a command/module is blocked. | `;verbose true`
|
||||||
`;permrole` `;pr` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. | `;pr role`
|
`;permrole` `;pr` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. | `;pr role`
|
||||||
`;listperms` `;lp` | Lists whole permission chain with their indexes. You can specify an optional page number if there are a lot of permissions. | `;lp` or `;lp 3`
|
`;listperms` `;lp` | Lists whole permission chain with their indexes. You can specify an optional page number if there are a lot of permissions. | `;lp` or `;lp 3`
|
||||||
`;removeperm` `;rp` | Removes a permission from a given position | `;rp 1`
|
`;removeperm` `;rp` | Removes a permission from a given position in Permissions list. | `;rp 1`
|
||||||
`;moveperm` `;mp` | Moves permission from one position to another. | `;mp 2 4`
|
`;moveperm` `;mp` | Moves permission from one position to another in Permissions list. | `;mp 2 4`
|
||||||
`;srvrcmd` `;sc` | Sets a command's permission at the server level. | `;sc "command name" disable`
|
`;srvrcmd` `;sc` | Sets a command's permission at the server level. | `;sc "command name" disable`
|
||||||
`;srvrmdl` `;sm` | Sets a module's permission at the server level. | `;sm "module name" enable`
|
`;srvrmdl` `;sm` | Sets a module's permission at the server level. | `;sm "module name" enable`
|
||||||
`;usrcmd` `;uc` | Sets a command's permission at the user level. | `;uc "command name" enable SomeUsername`
|
`;usrcmd` `;uc` | Sets a command's permission at the user level. | `;uc "command name" enable SomeUsername`
|
||||||
@ -263,6 +268,8 @@ Command and aliases | Description | Usage
|
|||||||
`~osu` | Shows osu stats for a player. | `~osu Name` or `~osu Name taiko`
|
`~osu` | Shows osu stats for a player. | `~osu Name` or `~osu Name taiko`
|
||||||
`~osub` | Shows information about an osu beatmap. | `~osub https://osu.ppy.sh/s/127712`
|
`~osub` | Shows information about an osu beatmap. | `~osub https://osu.ppy.sh/s/127712`
|
||||||
`~osu5` | Displays a user's top 5 plays. | `~osu5 Name`
|
`~osu5` | Displays a user's top 5 plays. | `~osu5 Name`
|
||||||
|
`~placelist` | Shows the list of available tags for the `~place` command. | `~placelist`
|
||||||
|
`~place` | Shows a placeholder image of a given tag. Use `~placelist` to see all available tags. You can specify the width and height of the image as the last two optional arguments. | `~place Cage` or `~place steven 500 400`
|
||||||
`~pokemon` `~poke` | Searches for a pokemon. | `~poke Sylveon`
|
`~pokemon` `~poke` | Searches for a pokemon. | `~poke Sylveon`
|
||||||
`~pokemonability` `~pokeab` | Searches for a pokemon ability. | `~pokeab overgrow`
|
`~pokemonability` `~pokeab` | Searches for a pokemon ability. | `~pokeab overgrow`
|
||||||
`~hitbox` `~hb` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** | `~hitbox SomeStreamer`
|
`~hitbox` `~hb` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** | `~hitbox SomeStreamer`
|
||||||
@ -271,13 +278,14 @@ Command and aliases | Description | Usage
|
|||||||
`~liststreams` `~ls` | Lists all streams you are following on this server. | `~ls`
|
`~liststreams` `~ls` | Lists all streams you are following on this server. | `~ls`
|
||||||
`~removestream` `~rms` | Removes notifications of a certain streamer on this channel. **Requires ManageMessages server permission.** | `~rms SomeGuy`
|
`~removestream` `~rms` | Removes notifications of a certain streamer on this channel. **Requires ManageMessages server permission.** | `~rms SomeGuy`
|
||||||
`~checkstream` `~cs` | Checks if a user is online on a certain streaming platform. | `~cs twitch MyFavStreamer`
|
`~checkstream` `~cs` | Checks if a user is online on a certain streaming platform. | `~cs twitch MyFavStreamer`
|
||||||
|
`~xkcd` | Shows a XKCD comic. No arguments will retrieve random one. Number argument will retrieve a specific comic, and "latest" will get the latest one. | `~xkcd` or `~xkcd 1400` or `~xkcd latest`
|
||||||
|
|
||||||
### Utility
|
### Utility
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
----------------|--------------|-------
|
----------------|--------------|-------
|
||||||
`.whosplaying` `.whpl` | Shows a list of users who are playing the specified game. | `.whpl Overwatch`
|
`.whosplaying` `.whpl` | Shows a list of users who are playing the specified game. | `.whpl Overwatch`
|
||||||
`.inrole` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. | `.inrole Role`
|
`.inrole` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. | `.inrole Role`
|
||||||
`.checkmyperms` | Checks your userspecific permissions on this channel. | `.checkmyperms`
|
`.checkmyperms` | Checks your user-specific permissions on this channel. | `.checkmyperms`
|
||||||
`.userid` `.uid` | Shows user ID. | `.uid` or `.uid "@SomeGuy"`
|
`.userid` `.uid` | Shows user ID. | `.uid` or `.uid "@SomeGuy"`
|
||||||
`.channelid` `.cid` | Shows current channel ID. | `.cid`
|
`.channelid` `.cid` | Shows current channel ID. | `.cid`
|
||||||
`.serverid` `.sid` | Shows current server ID. | `.sid`
|
`.serverid` `.sid` | Shows current server ID. | `.sid`
|
||||||
@ -287,6 +295,7 @@ Command and aliases | Description | Usage
|
|||||||
`.showemojis` `.se` | Shows a name and a link to every SPECIAL emoji in the message. | `.se A message full of SPECIAL emojis`
|
`.showemojis` `.se` | Shows a name and a link to every SPECIAL emoji in the message. | `.se A message full of SPECIAL emojis`
|
||||||
`.calculate` `.calc` | Evaluate a mathematical expression. | `.calc 1+1`
|
`.calculate` `.calc` | Evaluate a mathematical expression. | `.calc 1+1`
|
||||||
`.calcops` | Shows all available operations in .calc command | `.calcops`
|
`.calcops` | Shows all available operations in .calc command | `.calcops`
|
||||||
|
`.togethertube` `.totube` | Creates a new room on <https://togethertube.com> and shows the link in the chat. | `.totube`
|
||||||
`.serverinfo` `.sinfo` | Shows info about the server the bot is on. If no channel is supplied, it defaults to current one. | `.sinfo Some Server`
|
`.serverinfo` `.sinfo` | Shows info about the server the bot is on. If no channel is supplied, it defaults to current one. | `.sinfo Some Server`
|
||||||
`.channelinfo` `.cinfo` | Shows info about the channel. If no channel is supplied, it defaults to current one. | `.cinfo #some-channel`
|
`.channelinfo` `.cinfo` | Shows info about the channel. If no channel is supplied, it defaults to current one. | `.cinfo #some-channel`
|
||||||
`.userinfo` `.uinfo` | Shows info about the user. If no user is supplied, it defaults a user running the command. | `.uinfo @SomeUser`
|
`.userinfo` `.uinfo` | Shows info about the user. If no user is supplied, it defaults a user running the command. | `.uinfo @SomeUser`
|
||||||
|
@ -749,7 +749,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
|
|
||||||
game = game ?? "";
|
game = game ?? "";
|
||||||
|
|
||||||
await NadekoBot.Client.GetCurrentUser().ModifyStatusAsync(u => u.Game = new Game(game)).ConfigureAwait(false);
|
await NadekoBot.Client.SetGame(game).ConfigureAwait(false);
|
||||||
|
|
||||||
await channel.SendMessageAsync("`New game set.`").ConfigureAwait(false);
|
await channel.SendMessageAsync("`New game set.`").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
@ -763,7 +763,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
|
|
||||||
name = name ?? "";
|
name = name ?? "";
|
||||||
|
|
||||||
await NadekoBot.Client.GetCurrentUser().ModifyStatusAsync(u => u.Game = new Game(name, url, StreamType.Twitch)).ConfigureAwait(false);
|
await NadekoBot.Client.SetStream(name, url).ConfigureAwait(false);
|
||||||
|
|
||||||
await channel.SendMessageAsync("`New stream set.`").ConfigureAwait(false);
|
await channel.SendMessageAsync("`New stream set.`").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,8 @@ namespace NadekoBot.Modules.Administration
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
var t = Task.Run(async () =>
|
var t = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
AntiSpamSetting spamSettings;
|
AntiSpamSetting spamSettings;
|
||||||
if (!antiSpamGuilds.TryGetValue(channel.Guild.Id, out spamSettings))
|
if (!antiSpamGuilds.TryGetValue(channel.Guild.Id, out spamSettings))
|
||||||
@ -114,10 +116,10 @@ namespace NadekoBot.Modules.Administration
|
|||||||
{
|
{
|
||||||
var log = await PunishUser((IGuildUser)msg.Author, spamSettings.Action, spamSettings.MuteRole, ProtectionType.Spamming)
|
var log = await PunishUser((IGuildUser)msg.Author, spamSettings.Action, spamSettings.MuteRole, ProtectionType.Spamming)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
try { await channel.Guild.SendMessageToOwnerAsync(log).ConfigureAwait(false); } catch { }
|
await channel.Guild.SendMessageToOwnerAsync(log).ConfigureAwait(false); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch { }
|
||||||
});
|
});
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
};
|
};
|
||||||
|
@ -26,6 +26,8 @@ namespace NadekoBot.Modules.Administration
|
|||||||
_client.UserJoined += (user) =>
|
_client.UserJoined += (user) =>
|
||||||
{
|
{
|
||||||
var t = Task.Run(async () =>
|
var t = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
GuildConfig conf;
|
GuildConfig conf;
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
@ -39,7 +41,9 @@ namespace NadekoBot.Modules.Administration
|
|||||||
var role = user.Guild.Roles.FirstOrDefault(r => r.Id == conf.AutoAssignRoleId);
|
var role = user.Guild.Roles.FirstOrDefault(r => r.Id == conf.AutoAssignRoleId);
|
||||||
|
|
||||||
if (role != null)
|
if (role != null)
|
||||||
try { await user.AddRolesAsync(role); } catch (Exception ex) { _log.Warn(ex); }
|
await user.AddRolesAsync(role);
|
||||||
|
}
|
||||||
|
catch (Exception ex) { _log.Warn(ex); }
|
||||||
});
|
});
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
};
|
};
|
||||||
|
@ -89,6 +89,8 @@ namespace NadekoBot.Modules.Administration
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
var task = Task.Run(async () =>
|
var task = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
string str = $"🕔`{prettyCurrentTime}`";
|
string str = $"🕔`{prettyCurrentTime}`";
|
||||||
if (before.Username != after.Username)
|
if (before.Username != after.Username)
|
||||||
@ -113,6 +115,8 @@ namespace NadekoBot.Modules.Administration
|
|||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
try { await logChannel.SendMessageAsync(str).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
try { await logChannel.SendMessageAsync(str).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
});
|
});
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
@ -137,6 +141,8 @@ namespace NadekoBot.Modules.Administration
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
var task = Task.Run(async () =>
|
var task = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if (before.Name != after.Name)
|
if (before.Name != after.Name)
|
||||||
await logChannel.SendMessageAsync($@"`{prettyCurrentTime}` **Channel Name Changed** `#{after.Name}` ({after.Id})
|
await logChannel.SendMessageAsync($@"`{prettyCurrentTime}` **Channel Name Changed** `#{after.Name}` ({after.Id})
|
||||||
@ -146,6 +152,8 @@ namespace NadekoBot.Modules.Administration
|
|||||||
await logChannel.SendMessageAsync($@"`{prettyCurrentTime}` **Channel Topic Changed** `#{after.Name}` ({after.Id})
|
await logChannel.SendMessageAsync($@"`{prettyCurrentTime}` **Channel Topic Changed** `#{after.Name}` ({after.Id})
|
||||||
`Old:` {((ITextChannel)before).Topic}
|
`Old:` {((ITextChannel)before).Topic}
|
||||||
`New:` {((ITextChannel)after).Topic}").ConfigureAwait(false);
|
`New:` {((ITextChannel)after).Topic}").ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
});
|
});
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
@ -364,12 +372,16 @@ namespace NadekoBot.Modules.Administration
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
var task = Task.Run(async () =>
|
var task = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
var str = $@"🕔`{prettyCurrentTime}` **Message** 🚮 `#{channel.Name}`
|
var str = $@"🕔`{prettyCurrentTime}` **Message** 🚮 `#{channel.Name}`
|
||||||
👤`{msg.Author.Username}`: {msg.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)}";
|
👤`{msg.Author.Username}`: {msg.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)}";
|
||||||
if (msg.Attachments.Any())
|
if (msg.Attachments.Any())
|
||||||
str += $"{Environment.NewLine}`Attachements`: {string.Join(", ", msg.Attachments.Select(a => a.ProxyUrl))}";
|
str += $"{Environment.NewLine}`Attachements`: {string.Join(", ", msg.Attachments.Select(a => a.ProxyUrl))}";
|
||||||
try { await logChannel.SendMessageAsync(str).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
await logChannel.SendMessageAsync(str).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
catch (Exception ex) { _log.Warn(ex); }
|
||||||
});
|
});
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
@ -58,9 +58,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
if (string.IsNullOrWhiteSpace(status))
|
if (string.IsNullOrWhiteSpace(status))
|
||||||
continue;
|
continue;
|
||||||
PlayingPlaceholders.ForEach(e => status = status.Replace(e.Key, e.Value()));
|
PlayingPlaceholders.ForEach(e => status = status.Replace(e.Key, e.Value()));
|
||||||
await (await NadekoBot.Client.GetCurrentUserAsync())
|
await NadekoBot.Client.SetGame(status);
|
||||||
.ModifyStatusAsync(mpp => mpp.Game = new Game(status))
|
|
||||||
.ConfigureAwait(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -39,9 +39,10 @@ namespace NadekoBot.Modules.Administration
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
var task = Task.Run(async () =>
|
var task = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
var botUserPerms = guild.GetCurrentUser().GuildPermissions;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var botUserPerms = guild.GetCurrentUser().GuildPermissions;
|
||||||
|
|
||||||
if (before.VoiceChannel == after.VoiceChannel) return;
|
if (before.VoiceChannel == after.VoiceChannel) return;
|
||||||
|
|
||||||
if (!voicePlusTextCache.Contains(guild.Id))
|
if (!voicePlusTextCache.Contains(guild.Id))
|
||||||
|
@ -186,6 +186,7 @@ namespace NadekoBot.Modules.Gambling
|
|||||||
await Task.Delay(2500);
|
await Task.Delay(2500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch { }
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
NadekoBot.Client.MessageReceived -= Client_MessageReceived;
|
NadekoBot.Client.MessageReceived -= Client_MessageReceived;
|
||||||
|
@ -34,11 +34,15 @@ namespace NadekoBot.Modules.Gambling
|
|||||||
var num1 = gen / 10;
|
var num1 = gen / 10;
|
||||||
var num2 = gen % 10;
|
var num2 = gen % 10;
|
||||||
var imageStream = await Task.Run(() =>
|
var imageStream = await Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
new[] { GetDice(num1), GetDice(num2) }.Merge().SaveAsPng(ms);
|
new[] { GetDice(num1), GetDice(num2) }.Merge().SaveAsPng(ms);
|
||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
return ms;
|
return ms;
|
||||||
|
}
|
||||||
|
catch { return new MemoryStream(); }
|
||||||
});
|
});
|
||||||
|
|
||||||
await channel.SendFileAsync(imageStream, "dice.png", $"{umsg.Author.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false);
|
await channel.SendFileAsync(imageStream, "dice.png", $"{umsg.Author.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false);
|
||||||
|
@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Games.Trivia
|
|||||||
this.guild = guild;
|
this.guild = guild;
|
||||||
this.channel = channel;
|
this.channel = channel;
|
||||||
WinRequirement = winReq;
|
WinRequirement = winReq;
|
||||||
Task.Run(StartGame);
|
Task.Run(async () => { try { await StartGame().ConfigureAwait(false); } catch { } });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task StartGame()
|
private async Task StartGame()
|
||||||
|
@ -306,7 +306,7 @@ namespace NadekoBot.Modules.Music.Classes
|
|||||||
var link = (await NadekoBot.Google.GetVideosByKeywordsAsync(query).ConfigureAwait(false)).FirstOrDefault();
|
var link = (await NadekoBot.Google.GetVideosByKeywordsAsync(query).ConfigureAwait(false)).FirstOrDefault();
|
||||||
if (string.IsNullOrWhiteSpace(link))
|
if (string.IsNullOrWhiteSpace(link))
|
||||||
throw new OperationCanceledException("Not a valid youtube query.");
|
throw new OperationCanceledException("Not a valid youtube query.");
|
||||||
var allVideos = await Task.Run(async () => await YouTube.Default.GetAllVideosAsync(link).ConfigureAwait(false)).ConfigureAwait(false);
|
var allVideos = await Task.Run(async () => { try { return await YouTube.Default.GetAllVideosAsync(link).ConfigureAwait(false); } catch { return Enumerable.Empty<YouTubeVideo>(); } }).ConfigureAwait(false);
|
||||||
var videos = allVideos.Where(v => v.AdaptiveKind == AdaptiveKind.Audio);
|
var videos = allVideos.Where(v => v.AdaptiveKind == AdaptiveKind.Audio);
|
||||||
var video = videos
|
var video = videos
|
||||||
.Where(v => v.AudioBitrate < 192)
|
.Where(v => v.AudioBitrate < 192)
|
||||||
|
@ -799,9 +799,10 @@ namespace NadekoBot.Modules.Music
|
|||||||
var queuedMessage = await textCh.SendMessageAsync($"🎵`Queued`{resolvedSong.PrettyName} **at** `#{musicPlayer.Playlist.Count + 1}`").ConfigureAwait(false);
|
var queuedMessage = await textCh.SendMessageAsync($"🎵`Queued`{resolvedSong.PrettyName} **at** `#{musicPlayer.Playlist.Count + 1}`").ConfigureAwait(false);
|
||||||
var t = Task.Run(async () =>
|
var t = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await Task.Delay(10000).ConfigureAwait(false);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
await Task.Delay(10000).ConfigureAwait(false);
|
||||||
|
|
||||||
await queuedMessage.DeleteAsync().ConfigureAwait(false);
|
await queuedMessage.DeleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
@ -111,9 +111,13 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
Command = cmd.Text.ToLowerInvariant(),
|
Command = cmd.Text.ToLowerInvariant(),
|
||||||
});
|
});
|
||||||
var t = Task.Run(async () =>
|
var t = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
await Task.Delay(cdRule.Seconds * 1000);
|
await Task.Delay(cdRule.Seconds * 1000);
|
||||||
activeCdsForGuild.RemoveWhere(ac => ac.Command == cmd.Text.ToLowerInvariant() && ac.UserId == user.Id);
|
activeCdsForGuild.RemoveWhere(ac => ac.Command == cmd.Text.ToLowerInvariant() && ac.UserId == user.Id);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
var smallObj = JArray.Parse(res)[0];
|
var smallObj = JArray.Parse(res)[0];
|
||||||
var aniData = await http.GetStringAsync("http://anilist.co/api/anime/" + smallObj["id"] + $"?access_token={anilistToken}").ConfigureAwait(false);
|
var aniData = await http.GetStringAsync("http://anilist.co/api/anime/" + smallObj["id"] + $"?access_token={anilistToken}").ConfigureAwait(false);
|
||||||
|
|
||||||
return await Task.Run(() => JsonConvert.DeserializeObject<AnimeResult>(aniData)).ConfigureAwait(false);
|
return await Task.Run(() => { try { return JsonConvert.DeserializeObject<AnimeResult>(aniData); } catch { return null; } }).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
@ -118,7 +118,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
var smallObj = JArray.Parse(res)[0];
|
var smallObj = JArray.Parse(res)[0];
|
||||||
var aniData = await http.GetStringAsync("http://anilist.co/api/manga/" + smallObj["id"] + $"?access_token={anilistToken}").ConfigureAwait(false);
|
var aniData = await http.GetStringAsync("http://anilist.co/api/manga/" + smallObj["id"] + $"?access_token={anilistToken}").ConfigureAwait(false);
|
||||||
|
|
||||||
return await Task.Run(() => JsonConvert.DeserializeObject<MangaResult>(aniData)).ConfigureAwait(false);
|
return await Task.Run(() => { try { return JsonConvert.DeserializeObject<MangaResult>(aniData); } catch { return null; } }).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -9,6 +9,7 @@ using Discord.API;
|
|||||||
using Discord.Logging;
|
using Discord.Logging;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
using NadekoBot.Extensions;
|
||||||
|
|
||||||
namespace NadekoBot
|
namespace NadekoBot
|
||||||
{
|
{
|
||||||
@ -70,6 +71,9 @@ namespace NadekoBot
|
|||||||
public Task<ISelfUser> GetCurrentUserAsync() =>
|
public Task<ISelfUser> GetCurrentUserAsync() =>
|
||||||
Clients[0].GetCurrentUserAsync();
|
Clients[0].GetCurrentUserAsync();
|
||||||
|
|
||||||
|
public Task<ISelfUser[]> GetAllCurrentUsersAsync() =>
|
||||||
|
Task.WhenAll(Clients.Select(c => c.GetCurrentUserAsync()));
|
||||||
|
|
||||||
public IReadOnlyCollection<IGuild> GetGuilds() =>
|
public IReadOnlyCollection<IGuild> GetGuilds() =>
|
||||||
Clients.SelectMany(c => c.GetGuilds()).ToArray();
|
Clients.SelectMany(c => c.GetGuilds()).ToArray();
|
||||||
|
|
||||||
@ -87,5 +91,18 @@ namespace NadekoBot
|
|||||||
|
|
||||||
internal Task DownloadAllUsersAsync() =>
|
internal Task DownloadAllUsersAsync() =>
|
||||||
Task.WhenAll(Clients.Select(async c => { await c.DownloadAllUsersAsync(); _log.Info($"Shard #{c.ShardId} downloaded {c.GetGuilds().Sum(g => g.GetUsers().Count)} users."); }));
|
Task.WhenAll(Clients.Select(async c => { await c.DownloadAllUsersAsync(); _log.Info($"Shard #{c.ShardId} downloaded {c.GetGuilds().Sum(g => g.GetUsers().Count)} users."); }));
|
||||||
|
|
||||||
|
public async Task SetGame(string game)
|
||||||
|
{
|
||||||
|
await Task.WhenAll((await GetAllCurrentUsersAsync())
|
||||||
|
.Select(u => u.ModifyStatusAsync(ms => ms.Game = new Discord.Game(game))));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetStream(string name, string url)
|
||||||
|
{
|
||||||
|
await Task.WhenAll((await GetAllCurrentUsersAsync())
|
||||||
|
.Select(u => u.ModifyStatusAsync(ms => ms.Game = new Discord.Game(name, url, StreamType.Twitch))));
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user