diff --git a/docs/guides/Linux Guide.md b/docs/guides/Linux Guide.md index 87775703..143b88f9 100644 --- a/docs/guides/Linux Guide.md +++ b/docs/guides/Linux Guide.md @@ -97,12 +97,30 @@ sudo apt-get update && sudo apt-get install ffmpeg -y` ####Getting NadekoBot **10)** -`cd ~ && git clone -b 1.0 --recursive https://github.com/Kwoth/NadekoBot.git` + +- `cd ~` +- `curl -L https://github.com/Kwoth/NadekoBot-BashScript/raw/master/nadeko_installer.sh | sh` +*Skip steps 10.5-11.5 and continue to run the bot, if you see errors while running, do the steps (10.5-11.5) below:* + +**10.5)** + +- `cd ~ && git clone -b 1.0 --recursive https://github.com/Kwoth/NadekoBot.git` ####Building NadekoBot **11)** -`cd ~/NadekoBot/ && dotnet restore && cd ~/NadekoBot/src/NadekoBot/ && dotnet build --configuration Release` + +- `cd ~/NadekoBot/ && dotnet restore && cd ~/NadekoBot/src/NadekoBot/ && dotnet build --configuration Release` +*if you see error, try:* + +**11.5)** + +- `cd ~/NadekoBot/discord.net` +- `dotnet restore -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json` +- `dotnet restore` +- `cd ~/NadekoBot/src/NadekoBot/` +- `dotnet restore` +- `dotnet build --configuration Release` ####Setting up NadekoBot @@ -130,14 +148,14 @@ sudo apt-get update && sudo apt-get install ffmpeg -y` Go back to **PuTTY**, `(hope its still running xD)` **12)** -Type/ Copy and hit **Enter**. - `tmux new -s nadeko` -`cd NadekoBot/src/NadekoBot/` + **^this will create a new session named “nadeko”** *(you can replace “nadeko” with anything you prefer and remember its your session name)* so you can run the bot in background without having to keep running PuTTY in the background. **13)** -`dotnet run --configuration Release` + +- `cd NadekoBot/src/NadekoBot/` +- `dotnet run --configuration Release` **CHECK THE BOT IN DISCORD, IF EVERYTHING IS WORKING** diff --git a/docs/guides/OSX Guide.md b/docs/guides/OSX Guide.md index a475592a..1cc00805 100644 --- a/docs/guides/OSX Guide.md +++ b/docs/guides/OSX Guide.md @@ -7,7 +7,7 @@ ####Installing Homebrew -`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` +```/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"``` Run `brew update` to fetch the latest package data. @@ -26,14 +26,16 @@ brew install tmux ``` ####Installing .NET Core SDK + - `ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/` - `ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/` - Download the .NET Core SDK, found [here.](https://go.microsoft.com/fwlink/?LinkID=827526) - Open the `.pkg` file you downloaded and install it. +- `ln -s /usr/local/share/dotnet/dotnet /usr/local/bin` ####Check your `FFMPEG` -**In case your `FFMPEG` wasnt installed properly** +**In case your `FFMPEG` wasnt installed properly (Optional)** - `brew options ffmpeg` - `brew install ffmpeg --with-x --with-y --with-z` etc. @@ -43,6 +45,7 @@ brew install tmux - Then try `brew install ffmpeg` again. ####Installing xcode-select + Xcode command line tools. You will do this in Terminal.app by running the following command line: `xcode-select --install` @@ -50,11 +53,23 @@ Xcode command line tools. You will do this in Terminal.app by running the follow A dialog box will open asking if you want to install `xcode-select`. Select install and finish the installation. ####Downloading and building Nadeko + +**METHOD I** + +- `cd ~` +- `curl -L https://github.com/Kwoth/NadekoBot-BashScript/raw/master/nadeko_installer.sh | sh` + +*If you fail to run the bot with* `METHOD I` *try:* + +**METHOD II** + - `cd ~` - `git clone -b 1.0 --recursive https://github.com/Kwoth/NadekoBot.git` -- `cd ~/NadekoBot/` +- `cd ~/NadekoBot/discord.net` +- `dotnet restore -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json` - `dotnet restore` - `cd ~/NadekoBot/src/NadekoBot/` +- `dotnet restore` - `dotnet build --configuration Release` ####Creating DiscordBot application @@ -67,7 +82,7 @@ A dialog box will open asking if you want to install `xcode-select`. Select inst - Keep this window open for now. ####Setting up Credentials.json file -- Open up the `NadekoBot` folder, which should be in your home directory, then the `src` folder and then the additonal `NadekoBot` folder. +- Open up the `NadekoBot` folder, which should be in your home directory, then `NadekoBot` folder then `src` folder and then the additonal `NadekoBot` folder. - In our `NadekoBot` folder you should have `.json` file named `credentials.json`. (Note: If you do not see a **.json** after `credentials.json `, do not add the `**.json**`. You most likely have `"Hide file extensions"` enabled.) - If you mess up the setup of `credentials.json`, rename `credentials_example.json` to `credentials.json`. - Open the file with your Text editor. @@ -82,28 +97,32 @@ A dialog box will open asking if you want to install `xcode-select`. Select inst - If done correctly, you are now the bot owner. You can add multiple owners by seperating each owner ID with a comma within the square brackets. ####Running NadekoBot - + +- Using tmux + `tmux new -s nadeko` ^this will create a new session named “nadeko” `(you can replace “nadeko” with anything you prefer and remember its your session name)`. -or if you want to use Screen, run: +- Using Screen + +If you want to use Screen, run: `screen -S nadeko` ^this will create a new screen named “nadeko” `(you can replace “nadeko” with anything you prefer and remember its your screen name)`. +- Start Nadeko using dotnet: + `cd ~/NadekoBot/src/NadekoBot/` -- Start Nadeko using dotnet: - `dotnet run --configuration Release` CHECK THE BOT IN DISCORD, IF EVERYTHING IS WORKING -Now time to move bot to background and to do that, press CTRL+B+D (this will ditach the nadeko session using TMUX) +Now time to move bot to background and to do that, press CTRL+B+D (this will detach the nadeko session using TMUX) *If you used Screen press CTRL+A+D (this will detach the nadeko screen)* @@ -112,7 +131,7 @@ Now time to move bot to background and to do that, press CTRL+B+D (this will dit - Copy your `Client ID` from your [Discord bot applications page.][DiscordApp] - Replace the `12345678` in this link `https://discordapp.com/oauth2/authorize?client_id=12345678&scope=bot&permissions=66186303` with your `Client ID`. - Your edited link should look like this: `https://discordapp.com/oauth2/authorize?client_id=**YOUR_CLENT_ID**&scope=bot&permissions=66186303`. -- Go to newly created link and pick the server we created, and click `Authorize`. +- Go to newly created link and pick the server, and click `Authorize`. - Bot should be added to your server. ####Setting NadekoBot Music @@ -142,4 +161,4 @@ Nadeko is really easy to update as of version 1.0! just copy and paste the comma [Atom]: https://atom.io/ [Invite Guide]: http://discord.kongslien.net/guide.html [Google Console]: https://console.developers.google.com -[Soundcloud]: https://soundcloud.com/you/apps/new \ No newline at end of file +[Soundcloud]: https://soundcloud.com/you/apps/new diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 36bc957d..86522f30 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -407,6 +407,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.ManageRoles)] [Priority(1)] public async Task SetMuteRole(IUserMessage imsg, [Remainder] string name) { @@ -427,6 +428,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.ManageRoles)] [Priority(0)] public Task SetMuteRole(IUserMessage imsg, [Remainder] IRole role) => SetMuteRole(imsg, role.Name); @@ -856,7 +858,7 @@ namespace NadekoBot.Modules.Administration } var title = $"Chatlog-{channel.Guild.Name}/#{channel.Name}-{DateTime.Now}.txt"; await (umsg.Author as IGuildUser).SendFileAsync( - await JsonConvert.SerializeObject(new { Messages = msgs.Select(s => $"【{s.Timestamp:HH:mm:ss}】" + s.ToString()) }, Formatting.Indented).ToStream().ConfigureAwait(false), + await JsonConvert.SerializeObject(new { Messages = msgs.Select(s => $"【{s.Timestamp:HH:mm:ss}】{s.Author}:" + s.ToString()) }, Formatting.Indented).ToStream().ConfigureAwait(false), title, title).ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs index eaca0700..8a85f700 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs @@ -58,8 +58,12 @@ namespace NadekoBot.Modules.Gambling if (guessStr != "H" && guessStr != "T" && guessStr != "HEADS" && guessStr != "TAILS") return; - if (amount < 1) + if (amount < 3) + { + await channel.SendMessageAsync($"You can't bet less than 3{Gambling.CurrencySign}.") + .ConfigureAwait(false); return; + } // todo update this long userFlowers; using (var uow = DbHandler.UnitOfWork()) diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index ac57940d..7107ea41 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -102,23 +102,45 @@ namespace NadekoBot.Modules.Gambling [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] - public Task Award(IUserMessage umsg, long amount, [Remainder] IGuildUser usr) => + [Priority(2)] + public Task Award(IUserMessage umsg, int amount, [Remainder] IGuildUser usr) => Award(umsg, amount, usr.Id); [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] - public async Task Award(IUserMessage umsg, long amount, [Remainder] ulong usrId) + [Priority(1)] + public async Task Award(IUserMessage umsg, int amount, ulong usrId) { var channel = (ITextChannel)umsg.Channel; if (amount <= 0) return; - await CurrencyHandler.AddCurrencyAsync(usrId, $"Awarded by bot owner. ({umsg.Author.Username}/{umsg.Author.Id})", (int)amount).ConfigureAwait(false); + await CurrencyHandler.AddCurrencyAsync(usrId, $"Awarded by bot owner. ({umsg.Author.Username}/{umsg.Author.Id})", amount).ConfigureAwait(false); await channel.SendMessageAsync($"{umsg.Author.Mention} successfully awarded {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} to <@{usrId}>!").ConfigureAwait(false); } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + [Priority(0)] + public async Task Award(IUserMessage umsg, int amount, [Remainder] IRole role) + { + var channel = (ITextChannel)umsg.Channel; + var users = channel.Guild.GetUsers() + .Where(u => u.Roles.Contains(role)) + .ToList(); + await Task.WhenAll(users.Select(u => CurrencyHandler.AddCurrencyAsync(u.Id, + $"Awarded by bot owner to **{role.Name}** role. ({umsg.Author.Username}/{umsg.Author.Id})", + amount))) + .ConfigureAwait(false); + + await channel.SendMessageAsync($"Awarded `{amount}` {Gambling.CurrencyPluralName} to `{users.Count}` users from `{role.Name}` role.") + .ConfigureAwait(false); + + } [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs index 7e53f791..dbc56b74 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Games.Trivia oldQuestions.Add(CurrentQuestion); //add it to exclusion list so it doesn't show up again //sendquestion try { await channel.SendMessageAsync($":question: **{CurrentQuestion.Question}**").ConfigureAwait(false); } - catch (HttpException ex) when (ex.StatusCode == System.Net.HttpStatusCode.Forbidden) + catch (HttpException ex) when (ex.StatusCode == System.Net.HttpStatusCode.NotFound || ex.StatusCode == System.Net.HttpStatusCode.Forbidden) { break; } @@ -80,7 +80,12 @@ namespace NadekoBot.Modules.Games.Trivia //hint await Task.Delay(HintTimeoutMiliseconds, token).ConfigureAwait(false); if (ShowHints) - try { await channel.SendMessageAsync($":exclamation:**Hint:** {CurrentQuestion.GetHint()}").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } + try { await channel.SendMessageAsync($":exclamation:**Hint:** {CurrentQuestion.GetHint()}").ConfigureAwait(false); } + catch (HttpException ex) when (ex.StatusCode == System.Net.HttpStatusCode.NotFound || ex.StatusCode == System.Net.HttpStatusCode.Forbidden) + { + break; + } + catch (Exception ex) { _log.Warn(ex); } //timeout await Task.Delay(QuestionDurationMiliseconds - HintTimeoutMiliseconds, token).ConfigureAwait(false); @@ -150,7 +155,7 @@ namespace NadekoBot.Modules.Games.Trivia await channel.SendMessageAsync($":exclamation: We have a winner! It's {guildUser.Mention}.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } - }); + }); return Task.CompletedTask; } diff --git a/src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs b/src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs index 769d2a80..be415465 100644 --- a/src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs +++ b/src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs @@ -94,8 +94,8 @@ namespace NadekoBot.Modules.Searches { "bn", "bn"}, { "bg", "bg"}, { "ca", "ca"}, - { "zh-TW", "zh-TW"}, - { "zh-CN", "zh-CN"}, + { "zh-tw", "zh-TW"}, + { "zh-cn", "zh-CN"}, { "hr", "hr"}, { "cs", "cs"}, { "da", "da"}, diff --git a/src/NadekoBot/Modules/Searches/Commands/PlaceCommands.cs b/src/NadekoBot/Modules/Searches/Commands/PlaceCommands.cs new file mode 100644 index 00000000..61997efc --- /dev/null +++ b/src/NadekoBot/Modules/Searches/Commands/PlaceCommands.cs @@ -0,0 +1,99 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Services; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Searches +{ + public partial class Searches + { + [Group] + public class PlaceCommands + { + string typesStr { get; } = ""; + public PlaceCommands() + { + typesStr = $"`List of \"{NadekoBot.ModulePrefixes[typeof(Searches).Name]}place\" tags:`\n" + String.Join(", ", Enum.GetNames(typeof(PlaceType))); + } + + public enum PlaceType + { + Cage, //http://www.placecage.com + Steven, //http://www.stevensegallery.com + Beard, //http://placebeard.it + Fill, //http://www.fillmurray.com + Bear, //https://www.placebear.com + Kitten, //http://placekitten.com + Bacon, //http://baconmockup.com + Xoart, //http://xoart.link + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task Placelist(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + await channel.SendMessageAsync(typesStr) + .ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task Place(IUserMessage imsg, PlaceType placeType, uint width = 0, uint height = 0) + { + var channel = (ITextChannel)imsg.Channel; + + string url = ""; + switch (placeType) + { + case PlaceType.Cage: + url = "http://www.placecage.com"; + break; + case PlaceType.Steven: + url = "http://www.stevensegallery.com"; + break; + case PlaceType.Beard: + url = "http://placebeard.it"; + break; + case PlaceType.Fill: + url = "http://www.fillmurray.com"; + break; + case PlaceType.Bear: + url = "https://www.placebear.com"; + break; + case PlaceType.Kitten: + url = "http://placekitten.com"; + break; + case PlaceType.Bacon: + url = "http://baconmockup.com"; + break; + case PlaceType.Xoart: + url = "http://xoart.link"; + break; + } + var rng = new NadekoRandom(); + if (width <= 0 || width > 1000) + width = (uint)rng.Next(250, 850); + + if (height <= 0 || height > 1000) + height = (uint)rng.Next(250, 850); + + url += $"/{width}/{height}"; + + //using (var http = new HttpClient()) + //{ + // var res = await http.GetStreamAsync(url).ConfigureAwait(false); + // await channel.SendFileAsync() + //} + await channel.SendMessageAsync(url).ConfigureAwait(false); + } + } + } +} diff --git a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs index 5f65fa64..3304a28b 100644 --- a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs @@ -5,6 +5,7 @@ using NadekoBot.Attributes; using NadekoBot.Extensions; using System; using System.Linq; +using System.Net.Http; using System.Text; using System.Threading.Tasks; @@ -12,6 +13,23 @@ namespace NadekoBot.Modules.Utility { partial class Utility : DiscordModule { + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task TogetherTube(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + Uri target; + using (var http = new HttpClient()) + { + var res = await http.GetAsync("https://togethertube.com/room/create").ConfigureAwait(false); + target = res.RequestMessage.RequestUri; + } + + await channel.SendMessageAsync($"{imsg.Author.Mention}, `Here is the link:` {target}") + .ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ServerInfo(IUserMessage msg, string guild = null) diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index f61aaeed..4523269d 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -93,28 +93,36 @@ namespace NadekoBot.Modules.Utility } } + public enum MeOrHere + { + Me,Here + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task Remind(IUserMessage umsg, string meorchannel, string timeStr, [Remainder] string message) + [Priority(1)] + public async Task Remind(IUserMessage umsg, MeOrHere meorhere, string timeStr, [Remainder] string message) { var channel = (ITextChannel)umsg.Channel; - var meorchStr = meorchannel.ToUpperInvariant(); - IMessageChannel ch; - bool isPrivate = false; - if (meorchStr == "ME") + IMessageChannel target; + if (meorhere == MeOrHere.Me) { - isPrivate = true; - ch = await ((IGuildUser)umsg.Author).CreateDMChannelAsync().ConfigureAwait(false); - } - else if (meorchStr == "HERE") - { - ch = channel; + target = await ((IGuildUser)umsg.Author).CreateDMChannelAsync().ConfigureAwait(false); } else { - ch = channel.Guild.GetTextChannels().FirstOrDefault(c => c.Name.ToUpperInvariant() == meorchStr || c.Id.ToString() == meorchStr); + target = channel; } + await Remind(umsg, target, timeStr, message).ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + [Priority(0)] + public async Task Remind(IUserMessage umsg, IMessageChannel ch, string timeStr, [Remainder] string message) + { + var channel = (ITextChannel)umsg.Channel; if (ch == null) { @@ -168,7 +176,7 @@ namespace NadekoBot.Modules.Utility var rem = new Reminder { ChannelId = ch.Id, - IsPrivate = isPrivate, + IsPrivate = ch is IDMChannel, When = time, Message = message, UserId = umsg.Author.Id, @@ -184,7 +192,7 @@ namespace NadekoBot.Modules.Utility try { await channel.SendMessageAsync($"⏰ I will remind \"{(ch is ITextChannel ? ((ITextChannel)ch).Name : umsg.Author.Username)}\" to \"{message.SanitizeMentions()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false); } catch { } await StartReminder(rem); } - + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] diff --git a/src/NadekoBot/NadekoBot.cs b/src/NadekoBot/NadekoBot.cs index 6e5d5e03..a50dd94c 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/src/NadekoBot/NadekoBot.cs @@ -43,7 +43,7 @@ namespace NadekoBot SetupLogger(); _log = LogManager.GetCurrentClassLogger(); - _log.Info("Starting NadekoBot v" + typeof(NadekoBot).GetTypeInfo().Assembly.GetCustomAttribute().InformationalVersion); + _log.Info("Starting NadekoBot v" + StatsService.BotVersion); Credentials = new BotCredentials(); diff --git a/src/NadekoBot/Properties/AssemblyInfo.cs b/src/NadekoBot/Properties/AssemblyInfo.cs index 9a06963a..ca3bd293 100644 --- a/src/NadekoBot/Properties/AssemblyInfo.cs +++ b/src/NadekoBot/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("NadekoBot")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyInformationalVersion("1.0-alpha")] +[assembly: AssemblyInformationalVersion("1.0")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index d497209f..b3153042 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -555,7 +555,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Awards someone a certain amount of currency. . + /// Looks up a localized string similar to Awards someone a certain amount of currency. You can also specify a role name to award currency to all users in a role.. /// public static string award_desc { get { @@ -564,7 +564,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `{0}award 100 @person`. + /// Looks up a localized string similar to `{0}award 100 @person` or `{0}award 5 Role Of Gamblers`. /// public static string award_usage { get { @@ -4244,6 +4244,60 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to place. + /// + public static string place_cmd { + get { + return ResourceManager.GetString("place_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shows a placeholder image of a given tag. Use `{0}placelist` to see all available tags. You can specify the width and height of the image as the last two optional arguments.. + /// + public static string place_desc { + get { + return ResourceManager.GetString("place_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `{0}place Cage` or `{0}place steven 500 400`. + /// + public static string place_usage { + get { + return ResourceManager.GetString("place_usage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to placelist. + /// + public static string placelist_cmd { + get { + return ResourceManager.GetString("placelist_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shows the list of available tags for the `{0}place` command.. + /// + public static string placelist_desc { + get { + return ResourceManager.GetString("placelist_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `{0}placelist`. + /// + public static string placelist_usage { + get { + return ResourceManager.GetString("placelist_usage", resourceCulture); + } + } + /// /// Looks up a localized string similar to plant. /// @@ -6350,6 +6404,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to togethertube totube. + /// + public static string togethertube_cmd { + get { + return ResourceManager.GetString("togethertube_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Creates a new room on <https://togethertube.com> and shows the link in the chat.. + /// + public static string togethertube_desc { + get { + return ResourceManager.GetString("togethertube_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `{0}totube`. + /// + public static string togethertube_usage { + get { + return ResourceManager.GetString("togethertube_usage", resourceCulture); + } + } + /// /// Looks up a localized string similar to tq. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index cd384176..9ad7965d 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -1246,10 +1246,10 @@ award - Awards someone a certain amount of currency. + Awards someone a certain amount of currency. You can also specify a role name to award currency to all users in a role. - `{0}award 100 @person` + `{0}award 100 @person` or `{0}award 5 Role Of Gamblers` take @@ -2511,4 +2511,31 @@ `{0}xkcd` or `{0}xkcd 1400` or `{0}xkcd latest` - + + placelist + + + Shows the list of available tags for the `{0}place` command. + + + `{0}placelist` + + + place + + + Shows a placeholder image of a given tag. Use `{0}placelist` to see all available tags. You can specify the width and height of the image as the last two optional arguments. + + + `{0}place Cage` or `{0}place steven 500 400` + + + togethertube totube + + + Creates a new room on <https://togethertube.com> and shows the link in the chat. + + + `{0}totube` + + \ No newline at end of file diff --git a/src/NadekoBot/Services/Impl/StatsService.cs b/src/NadekoBot/Services/Impl/StatsService.cs index 61a27233..6a5c12c6 100644 --- a/src/NadekoBot/Services/Impl/StatsService.cs +++ b/src/NadekoBot/Services/Impl/StatsService.cs @@ -17,7 +17,7 @@ namespace NadekoBot.Services.Impl private DateTime started; private int commandsRan = 0; - public string BotVersion => "1.0-beta1"; + public const string BotVersion = "1.0-rc1"; public string Heap => Math.Round((double)GC.GetTotalMemory(false) / 1.MiB(), 2).ToString();