mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 17:28:27 -04:00
Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
db7cf3d757 | ||
|
83ea046d5f | ||
|
d5c94424e9 | ||
|
ff95b3d00f | ||
|
4b5fa3bb04 | ||
|
52c9ec670d | ||
|
1ac472c676 | ||
|
39f01a3164 | ||
|
486916944b | ||
|
68e96cd1bb | ||
|
5a647d100a | ||
|
a562a571e2 | ||
|
12146ad2da | ||
|
453ac3efd2 | ||
|
c9e89e1911 | ||
|
611817f78a | ||
|
2e66137f3e |
@@ -9,6 +9,7 @@
|
||||
!src/NadekoBot.Generators/**
|
||||
# Use Ayu stuff
|
||||
!src/ayu/**
|
||||
!docker-entrypoint.sh
|
||||
|
||||
# ignore bin and obj folders in projects
|
||||
src/**/bin/*
|
||||
|
@@ -95,4 +95,31 @@ upload-windows-updater-release:
|
||||
- sed -i "s/_VERSION_/$CI_COMMIT_TAG/g" releases-v3.json
|
||||
- aws --version
|
||||
- aws --endpoint-url $AWS_SERVICE_URL s3api put-object --bucket "$AWS_BUCKET_NAME" --key "dl/bot/$INSTALLER_FILE_NAME" --acl public-read --body "$INSTALLER_OUTPUT_DIR/$INSTALLER_FILE_NAME"
|
||||
- aws --endpoint-url $AWS_SERVICE_URL s3api put-object --bucket "$AWS_BUCKET_NAME" --key "dl/bot/releases-v3.json" --acl public-read --body "releases-v3.json"
|
||||
- aws --endpoint-url $AWS_SERVICE_URL s3api put-object --bucket "$AWS_BUCKET_NAME" --key "dl/bot/releases-v3.json" --acl public-read --body "releases-v3.json"
|
||||
|
||||
docker-build:
|
||||
# Use the official docker image.
|
||||
image: docker:latest
|
||||
stage: build
|
||||
services:
|
||||
- docker:dind
|
||||
before_script:
|
||||
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
|
||||
# Default branch leaves tag empty (= latest tag)
|
||||
# All other branches are tagged with the escaped branch name (commit ref slug)
|
||||
script:
|
||||
- |
|
||||
if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
|
||||
tag=""
|
||||
echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
|
||||
else
|
||||
tag=":$CI_COMMIT_REF_SLUG"
|
||||
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
|
||||
fi
|
||||
- docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
|
||||
- docker push "$CI_REGISTRY_IMAGE${tag}"
|
||||
# Run this job in a branch where a Dockerfile exists
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
exists:
|
||||
- Dockerfile
|
||||
|
33
CHANGELOG.md
33
CHANGELOG.md
@@ -4,15 +4,47 @@ Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.
|
||||
|
||||
## Unreleased
|
||||
|
||||
## [3.0.7]
|
||||
|
||||
### Added
|
||||
- `.streamsclear` re-added. It will remove all followed streams on the server.
|
||||
- `.gifts` now have 3 new ✂️ Haircut 🧻 ToiletPaper and 🥀 WiltedRose which **reduce** waifu's value
|
||||
- They are called negative gifts
|
||||
- They show up at the end of the `.gifts` page and are marked with a broken heart
|
||||
- They have a separate multiplier (`waifu.multi.negative_gift_effect` default 0.5, changeable via `.config gambling` or `data/gambling.yml`)
|
||||
- When gifted, the waifu's price will be reduced by the `price * multiplier`
|
||||
- Negative gifts don't show up in `.waifuinfo` nor is the record of them kept in the database
|
||||
|
||||
### Fixed
|
||||
- Fixed `%users%` and `%shard.usercount%` placeholders not showing correct values
|
||||
|
||||
## [3.0.6] - 27.09.2021
|
||||
|
||||
### Added
|
||||
|
||||
- .logignore now supports ignoring users and channels. Use without parameters to see the ignore list
|
||||
|
||||
### Changed
|
||||
|
||||
- Hangman rewrite
|
||||
- Hangman categories are now held in separate .yml files in data/hangman/XYZ.yml where XYZ is the category name
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed an exception which caused repeater queue to break
|
||||
- Fixed url field not working in embeds
|
||||
|
||||
## [3.0.5] - 20.09.2021
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed images not automatically reloading on startup if the keys don't exist
|
||||
- Fixed `.logserver` - it should no longer throw an exception if you had no logsettings previously
|
||||
|
||||
## [3.0.4] - 16.09.2021
|
||||
|
||||
### Added
|
||||
|
||||
- Fully translated to Brazilian Portuguese 🎉
|
||||
- Added `%server.boosters%` and `%server.boost_level%` placeholders
|
||||
- Added `DmHelpTextKeywords` to `data/bot.yml`
|
||||
@@ -20,6 +52,7 @@ Experimental changelog. Mostly based on [keepachangelog](https://keepachangelog.
|
||||
- If no keywords are specified, bot will reply to every DM (like before)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Possible fix for `.repeat` bug
|
||||
- Slight adjustment for repeater logic
|
||||
- Timer should no longer increase on some repeaters
|
||||
|
36
Dockerfile
36
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
||||
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
|
||||
WORKDIR /source
|
||||
|
||||
COPY src/NadekoBot/*.csproj src/NadekoBot/
|
||||
@@ -9,14 +9,34 @@ RUN dotnet restore src/NadekoBot/
|
||||
|
||||
COPY . .
|
||||
WORKDIR /source/src/NadekoBot
|
||||
RUN dotnet --version
|
||||
RUN dotnet publish -c Release -o /app --no-restore
|
||||
RUN set -xe; \
|
||||
dotnet --version; \
|
||||
dotnet publish -c Release -o /app --no-restore; \
|
||||
mv /app/data /app/data_init; \
|
||||
rm -Rf libopus* libsodium* opus.* runtimes/win* runtimes/osx* runtimes/linux-arm* runtimes/linux-mips*; \
|
||||
find /app -type f -exec chmod -x {} \; ;\
|
||||
chmod +x /app/NadekoBot
|
||||
|
||||
# final stage/image
|
||||
FROM mcr.microsoft.com/dotnet/runtime:5.0
|
||||
FROM mcr.microsoft.com/dotnet/runtime:5.0-buster-slim
|
||||
WORKDIR /app
|
||||
|
||||
RUN set -xe; \
|
||||
useradd -m nadeko; \
|
||||
apt-get update; \
|
||||
apt-get install -y libopus0 libsodium23 libsqlite3-0 curl ffmpeg python3 python3-pip sudo; \
|
||||
update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1; \
|
||||
echo 'Defaults>nadeko env_keep+="ASPNETCORE_* DOTNET_* NadekoBot_* shard_id total_shards TZ"' > /etc/sudoers.d/nadeko; \
|
||||
pip3 install --upgrade youtube-dl; \
|
||||
apt-get remove -y python3-pip; \
|
||||
chmod +x /usr/local/bin/youtube-dl
|
||||
|
||||
COPY --from=build /app ./
|
||||
COPY docker-entrypoint.sh /usr/local/sbin
|
||||
|
||||
ENV shard_id=0
|
||||
ENV total_shards=1
|
||||
WORKDIR /app
|
||||
COPY --from=build /app ./
|
||||
VOLUME [ "app/data", "app/creds.yml", "app/creds_example.yml" ]
|
||||
ENTRYPOINT dotnet NadekoBot.dll "$shard_id" "$total_shards"
|
||||
|
||||
VOLUME [ "app/data" ]
|
||||
ENTRYPOINT [ "/usr/local/sbin/docker-entrypoint.sh" ]
|
||||
CMD dotnet NadekoBot.dll "$shard_id" "$total_shards"
|
20
docker-entrypoint.sh
Executable file
20
docker-entrypoint.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
set -e;
|
||||
|
||||
data_init=/app/data_init
|
||||
data=/app/data
|
||||
|
||||
# populate /app/data if empty
|
||||
for i in $(ls $data_init)
|
||||
do
|
||||
if [ ! -e "$data/$i" ]; then
|
||||
[ -f "$data_init/$i" ] && cp "$data_init/$i" "$data/$i"
|
||||
[ -d "$data_init/$i" ] && cp -r "$data_init/$i" "$data/$i"
|
||||
fi
|
||||
done
|
||||
|
||||
# fix folder permissions
|
||||
chown -R nadeko:nadeko "$data"
|
||||
|
||||
# drop to regular user and launch command
|
||||
exec sudo -u nadeko "$@"
|
@@ -177,13 +177,13 @@ namespace NadekoBot.Common.Replacements
|
||||
/*OBSOLETE*/
|
||||
_reps.TryAdd("%servers%", () => c.Guilds.Count.ToString());
|
||||
#if !GLOBAL_NADEKO
|
||||
_reps.TryAdd("%users%", () => c.Guilds.Sum(s => s.Users.Count).ToString());
|
||||
_reps.TryAdd("%users%", () => c.Guilds.Sum(g => g.MemberCount).ToString());
|
||||
#endif
|
||||
|
||||
/*NEW*/
|
||||
_reps.TryAdd("%shard.servercount%", () => c.Guilds.Count.ToString());
|
||||
#if !GLOBAL_NADEKO
|
||||
_reps.TryAdd("%shard.usercount%", () => c.Guilds.Sum(s => s.Users.Count).ToString());
|
||||
_reps.TryAdd("%shard.usercount%", () => c.Guilds.Sum(g => g.MemberCount).ToString());
|
||||
#endif
|
||||
_reps.TryAdd("%shard.id%", () => c.ShardId.ToString());
|
||||
return this;
|
||||
|
@@ -53,6 +53,7 @@ namespace NadekoBot.Common.Replacements
|
||||
newEmbedData.Title = Replace(embedData.Title);
|
||||
newEmbedData.Thumbnail = Replace(embedData.Thumbnail);
|
||||
newEmbedData.Image = Replace(embedData.Image);
|
||||
newEmbedData.Url = Replace(embedData.Url);
|
||||
if (embedData.Author != null)
|
||||
{
|
||||
newEmbedData.Author = new SmartTextEmbedAuthor();
|
||||
|
@@ -48,6 +48,7 @@ namespace NadekoBot.Db
|
||||
|
||||
private static IQueryable<GuildConfig> IncludeEverything(this DbSet<GuildConfig> configs)
|
||||
{
|
||||
// todo split query
|
||||
return configs
|
||||
.AsQueryable()
|
||||
.Include(gc => gc.CommandCooldowns)
|
||||
@@ -117,7 +118,7 @@ namespace NadekoBot.Db
|
||||
{
|
||||
var logSetting = ctx.LogSettings
|
||||
.AsQueryable()
|
||||
.Include(x => x.IgnoredChannels)
|
||||
.Include(x => x.LogIgnores)
|
||||
.Where(x => x.GuildId == guildId)
|
||||
.FirstOrDefault();
|
||||
|
||||
|
@@ -1,8 +0,0 @@
|
||||
namespace NadekoBot.Services.Database.Models
|
||||
{
|
||||
public class IgnoredLogChannel : DbEntity
|
||||
{
|
||||
public LogSetting LogSetting { get; set; }
|
||||
public ulong ChannelId { get; set; }
|
||||
}
|
||||
}
|
16
src/NadekoBot/Db/Models/IgnoredLogItem.cs
Normal file
16
src/NadekoBot/Db/Models/IgnoredLogItem.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace NadekoBot.Services.Database.Models
|
||||
{
|
||||
public class IgnoredLogItem : DbEntity
|
||||
{
|
||||
public int LogSettingId { get; set; }
|
||||
public LogSetting LogSetting { get; set; }
|
||||
public ulong LogItemId { get; set; }
|
||||
public IgnoredItemType ItemType { get; set; }
|
||||
}
|
||||
|
||||
public enum IgnoredItemType
|
||||
{
|
||||
Channel,
|
||||
User,
|
||||
}
|
||||
}
|
@@ -4,8 +4,7 @@ namespace NadekoBot.Services.Database.Models
|
||||
{
|
||||
public class LogSetting : DbEntity
|
||||
{
|
||||
public HashSet<IgnoredLogChannel> IgnoredChannels { get; set; } = new HashSet<IgnoredLogChannel>();
|
||||
public HashSet<IgnoredVoicePresenceChannel> IgnoredVoicePresenceChannelIds { get; set; } = new HashSet<IgnoredVoicePresenceChannel>();
|
||||
public List<IgnoredLogItem> LogIgnores { get; set; } = new List<IgnoredLogItem>();
|
||||
|
||||
public ulong GuildId { get; set; }
|
||||
public ulong? LogOtherId { get; set; }
|
||||
|
@@ -42,8 +42,8 @@ namespace NadekoBot.Services.Database
|
||||
|
||||
//logging
|
||||
public DbSet<LogSetting> LogSettings { get; set; }
|
||||
public DbSet<IgnoredLogChannel> IgnoredLogChannels { get; set; }
|
||||
public DbSet<IgnoredVoicePresenceChannel> IgnoredVoicePresenceCHannels { get; set; }
|
||||
public DbSet<IgnoredLogItem> IgnoredLogChannels { get; set; }
|
||||
|
||||
public DbSet<RotatingPlayingStatus> RotatingStatus { get; set; }
|
||||
public DbSet<BlacklistEntry> Blacklist { get; set; }
|
||||
@@ -342,6 +342,15 @@ namespace NadekoBot.Services.Database
|
||||
modelBuilder.Entity<LogSetting>(ls => ls
|
||||
.HasIndex(x => x.GuildId)
|
||||
.IsUnique());
|
||||
|
||||
modelBuilder.Entity<LogSetting>(ls => ls
|
||||
.HasMany(x => x.LogIgnores)
|
||||
.WithOne(x => x.LogSetting)
|
||||
.OnDelete(DeleteBehavior.Cascade));
|
||||
|
||||
modelBuilder.Entity<IgnoredLogItem>(ili => ili
|
||||
.HasIndex(x => new { x.LogSettingId, x.LogItemId, x.ItemType })
|
||||
.IsUnique());
|
||||
|
||||
#endregion
|
||||
|
||||
|
2657
src/NadekoBot/Migrations/20210921204645_logignore-user-channel.Designer.cs
generated
Normal file
2657
src/NadekoBot/Migrations/20210921204645_logignore-user-channel.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace NadekoBot.Migrations
|
||||
{
|
||||
public partial class logignoreuserchannel : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.Sql("DELETE FROM IgnoredLogChannels WHERE LogSettingId is NULL");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_IgnoredLogChannels_LogSettings_LogSettingId",
|
||||
table: "IgnoredLogChannels");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_IgnoredLogChannels_LogSettingId",
|
||||
table: "IgnoredLogChannels");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "ChannelId",
|
||||
table: "IgnoredLogChannels",
|
||||
newName: "LogItemId");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "LogSettingId",
|
||||
table: "IgnoredLogChannels",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: 0,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "INTEGER",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "ItemType",
|
||||
table: "IgnoredLogChannels",
|
||||
type: "INTEGER",
|
||||
nullable: false,
|
||||
defaultValue: 0);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_IgnoredLogChannels_LogSettingId_LogItemId_ItemType",
|
||||
table: "IgnoredLogChannels",
|
||||
columns: new[] { "LogSettingId", "LogItemId", "ItemType" },
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_IgnoredLogChannels_LogSettings_LogSettingId",
|
||||
table: "IgnoredLogChannels",
|
||||
column: "LogSettingId",
|
||||
principalTable: "LogSettings",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_IgnoredLogChannels_LogSettings_LogSettingId",
|
||||
table: "IgnoredLogChannels");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_IgnoredLogChannels_LogSettingId_LogItemId_ItemType",
|
||||
table: "IgnoredLogChannels");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "ItemType",
|
||||
table: "IgnoredLogChannels");
|
||||
|
||||
migrationBuilder.RenameColumn(
|
||||
name: "LogItemId",
|
||||
table: "IgnoredLogChannels",
|
||||
newName: "ChannelId");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "LogSettingId",
|
||||
table: "IgnoredLogChannels",
|
||||
type: "INTEGER",
|
||||
nullable: true,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "INTEGER");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_IgnoredLogChannels_LogSettingId",
|
||||
table: "IgnoredLogChannels",
|
||||
column: "LogSettingId");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_IgnoredLogChannels_LogSettings_LogSettingId",
|
||||
table: "IgnoredLogChannels",
|
||||
column: "LogSettingId",
|
||||
principalTable: "LogSettings",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
}
|
||||
}
|
||||
}
|
@@ -187,29 +187,6 @@ namespace NadekoBot.Migrations
|
||||
b.ToTable("FollowedStream");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.ImageOnlyChannel", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<ulong>("ChannelId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime?>("DateAdded")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<ulong>("GuildId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ChannelId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("ImageOnlyChannels");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.AntiAltSetting", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -870,24 +847,28 @@ namespace NadekoBot.Migrations
|
||||
b.ToTable("GuildConfigs");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b =>
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogItem", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<ulong>("ChannelId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime?>("DateAdded")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("LogSettingId")
|
||||
b.Property<int>("ItemType")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<ulong>("LogItemId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("LogSettingId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("LogSettingId");
|
||||
b.HasIndex("LogSettingId", "LogItemId", "ItemType")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("IgnoredLogChannels");
|
||||
});
|
||||
@@ -914,6 +895,29 @@ namespace NadekoBot.Migrations
|
||||
b.ToTable("IgnoredVoicePresenceCHannels");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ImageOnlyChannel", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<ulong>("ChannelId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime?>("DateAdded")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<ulong>("GuildId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ChannelId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("ImageOnlyChannels");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -2269,11 +2273,13 @@ namespace NadekoBot.Migrations
|
||||
b.Navigation("GuildConfig");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b =>
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogItem", b =>
|
||||
{
|
||||
b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
|
||||
.WithMany("IgnoredChannels")
|
||||
.HasForeignKey("LogSettingId");
|
||||
.WithMany("LogIgnores")
|
||||
.HasForeignKey("LogSettingId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("LogSetting");
|
||||
});
|
||||
@@ -2281,7 +2287,7 @@ namespace NadekoBot.Migrations
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b =>
|
||||
{
|
||||
b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting")
|
||||
.WithMany("IgnoredVoicePresenceChannelIds")
|
||||
.WithMany()
|
||||
.HasForeignKey("LogSettingId");
|
||||
|
||||
b.Navigation("LogSetting");
|
||||
@@ -2598,9 +2604,7 @@ namespace NadekoBot.Migrations
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b =>
|
||||
{
|
||||
b.Navigation("IgnoredChannels");
|
||||
|
||||
b.Navigation("IgnoredVoicePresenceChannelIds");
|
||||
b.Navigation("LogIgnores");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b =>
|
||||
|
@@ -16,6 +16,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.ManageRoles)]
|
||||
[BotPerm(GuildPerm.ManageRoles)]
|
||||
public async Task AutoAssignRole([Leftover] IRole role)
|
||||
{
|
||||
var guser = (IGuildUser) ctx.User;
|
||||
@@ -47,6 +48,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.ManageRoles)]
|
||||
[BotPerm(GuildPerm.ManageRoles)]
|
||||
public async Task AutoAssignRole()
|
||||
{
|
||||
if (!_service.TryGetRoles(ctx.Guild.Id, out var roles))
|
||||
|
@@ -7,6 +7,7 @@ using NadekoBot.Services.Database.Models;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Administration.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -18,12 +19,6 @@ namespace NadekoBot.Modules.Administration
|
||||
[NoPublicBot]
|
||||
public class LogCommands : NadekoSubmodule<ILogCommandService>
|
||||
{
|
||||
public enum EnableDisable
|
||||
{
|
||||
Enable,
|
||||
Disable
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
@@ -43,14 +38,51 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task LogIgnore()
|
||||
{
|
||||
var channel = (ITextChannel)ctx.Channel;
|
||||
var settings = _service.GetGuildLogSettings(ctx.Guild.Id);
|
||||
|
||||
var removed = _service.LogIgnore(ctx.Guild.Id, ctx.Channel.Id);
|
||||
var chs = settings?.LogIgnores.Where(x => x.ItemType == IgnoredItemType.Channel).ToList()
|
||||
?? new List<IgnoredLogItem>();
|
||||
var usrs = settings?.LogIgnores.Where(x => x.ItemType == IgnoredItemType.User).ToList()
|
||||
?? new List<IgnoredLogItem>();
|
||||
|
||||
var eb = _eb.Create(ctx)
|
||||
.WithOkColor()
|
||||
.AddField(GetText(strs.log_ignored_channels),
|
||||
chs.Count == 0 ? "-" : string.Join('\n', chs.Select(x => $"{x.LogItemId} | <#{x.LogItemId}>")))
|
||||
.AddField(GetText(strs.log_ignored_users),
|
||||
usrs.Count == 0 ? "-" : string.Join('\n', usrs.Select(x => $"{x.LogItemId} | <@{x.LogItemId}>")));
|
||||
|
||||
await ctx.Channel.EmbedAsync(eb);
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
[OwnerOnly]
|
||||
public async Task LogIgnore([Leftover]ITextChannel target)
|
||||
{
|
||||
target ??= (ITextChannel)ctx.Channel;
|
||||
|
||||
var removed = _service.LogIgnore(ctx.Guild.Id, target.Id, IgnoredItemType.Channel);
|
||||
|
||||
if (!removed)
|
||||
await ReplyConfirmLocalizedAsync(strs.log_ignore(Format.Bold(channel.Mention + "(" + channel.Id + ")"))).ConfigureAwait(false);
|
||||
await ReplyConfirmLocalizedAsync(strs.log_ignore_chan(Format.Bold(target.Mention + "(" + target.Id + ")"))).ConfigureAwait(false);
|
||||
else
|
||||
await ReplyConfirmLocalizedAsync(strs.log_not_ignore(Format.Bold(channel.Mention + "(" + channel.Id + ")"))).ConfigureAwait(false);
|
||||
await ReplyConfirmLocalizedAsync(strs.log_not_ignore_chan(Format.Bold(target.Mention + "(" + target.Id + ")"))).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
[OwnerOnly]
|
||||
public async Task LogIgnore([Leftover]IUser target)
|
||||
{
|
||||
var removed = _service.LogIgnore(ctx.Guild.Id, target.Id, IgnoredItemType.User);
|
||||
|
||||
if (!removed)
|
||||
await ReplyConfirmLocalizedAsync(strs.log_ignore_user(Format.Bold(target.Mention + "(" + target.Id + ")"))).ConfigureAwait(false);
|
||||
else
|
||||
await ReplyConfirmLocalizedAsync(strs.log_not_ignore_user(Format.Bold(target.Mention + "(" + target.Id + ")"))).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
|
@@ -6,6 +6,8 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Discord;
|
||||
using Discord.WebSocket;
|
||||
using LinqToDB;
|
||||
using LinqToDB.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using NadekoBot.Common.Collections;
|
||||
@@ -21,7 +23,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
{
|
||||
void AddDeleteIgnore(ulong xId);
|
||||
Task LogServer(ulong guildId, ulong channelId, bool actionValue);
|
||||
bool LogIgnore(ulong guildId, ulong channelId);
|
||||
bool LogIgnore(ulong guildId, ulong itemId, IgnoredItemType itemType);
|
||||
LogSetting GetGuildLogSettings(ulong guildId);
|
||||
bool Log(ulong guildId, ulong? channelId, LogType type);
|
||||
}
|
||||
@@ -37,7 +39,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public bool LogIgnore(ulong guildId, ulong channelId)
|
||||
public bool LogIgnore(ulong guildId, ulong itemId, IgnoredItemType itemType)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -97,7 +99,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
.AsQueryable()
|
||||
.AsNoTracking()
|
||||
.Where(x => guildIds.Contains(x.GuildId))
|
||||
.Include(ls => ls.IgnoredChannels)
|
||||
.Include(ls => ls.LogIgnores)
|
||||
.ToList();
|
||||
|
||||
GuildLogSettings = configs
|
||||
@@ -165,21 +167,23 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
_ignoreMessageIds.Add(messageId);
|
||||
}
|
||||
|
||||
public bool LogIgnore(ulong gid, ulong cid)
|
||||
public bool LogIgnore(ulong gid, ulong itemId, IgnoredItemType itemType)
|
||||
{
|
||||
int removed = 0;
|
||||
using (var uow = _db.GetDbContext())
|
||||
{
|
||||
var logSetting = uow.LogSettingsFor(gid);
|
||||
removed = logSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == cid);
|
||||
removed = logSetting.LogIgnores
|
||||
.RemoveAll(x => x.ItemType == itemType && itemId == x.LogItemId);
|
||||
|
||||
if (removed == 0)
|
||||
{
|
||||
var toAdd = new IgnoredLogChannel {ChannelId = cid};
|
||||
logSetting.IgnoredChannels.Add(toAdd);
|
||||
var toAdd = new IgnoredLogItem { LogItemId = itemId, ItemType = itemType};
|
||||
logSetting.LogIgnores.Add(toAdd);
|
||||
}
|
||||
|
||||
GuildLogSettings.AddOrUpdate(gid, logSetting, (_, _) => logSetting);
|
||||
uow.SaveChanges();
|
||||
GuildLogSettings.AddOrUpdate(gid, logSetting, (_, _) => logSetting);
|
||||
}
|
||||
|
||||
return removed > 0;
|
||||
@@ -580,7 +584,8 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!GuildLogSettings.TryGetValue(before.Guild.Id, out LogSetting logSetting))
|
||||
if (!GuildLogSettings.TryGetValue(before.Guild.Id, out LogSetting logSetting)
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == after.Id && ilc.ItemType == IgnoredItemType.User))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -682,7 +687,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
|
||||
if (!GuildLogSettings.TryGetValue(before.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.ChannelUpdatedId is null)
|
||||
|| logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == after.Id))
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == after.Id && ilc.ItemType == IgnoredItemType.Channel))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -733,7 +738,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
|
||||
if (!GuildLogSettings.TryGetValue(ch.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.ChannelDestroyedId is null)
|
||||
|| logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == ch.Id))
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == ch.Id && ilc.ItemType == IgnoredItemType.Channel))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -772,7 +777,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
return;
|
||||
|
||||
if (!GuildLogSettings.TryGetValue(ch.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.ChannelCreatedId is null))
|
||||
|| logSetting.ChannelCreatedId is null)
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -817,7 +822,8 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
return;
|
||||
|
||||
if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.LogVoicePresenceId is null))
|
||||
|| (logSetting.LogVoicePresenceId is null)
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == iusr.Id && ilc.ItemType == IgnoredItemType.User))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -862,49 +868,6 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
//private Task _client_UserPresenceUpdated(Optional<SocketGuild> optGuild, SocketUser usr, SocketPresence before, SocketPresence after)
|
||||
//{
|
||||
// var _ = Task.Run(async () =>
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// var guild = optGuild.GetValueOrDefault() ?? (usr as SocketGuildUser)?.Guild;
|
||||
|
||||
// if (guild is null)
|
||||
// return;
|
||||
|
||||
// if (!GuildLogSettings.TryGetValue(guild.Id, out LogSetting logSetting)
|
||||
// || (logSetting.LogUserPresenceId is null)
|
||||
// || before.Status == after.Status)
|
||||
// return;
|
||||
|
||||
// ITextChannel logChannel;
|
||||
// if ((logChannel = await TryGetLogChannel(guild, logSetting, LogType.UserPresence)) is null)
|
||||
// return;
|
||||
// string str = "";
|
||||
// if (before.Status != after.Status)
|
||||
// str = "🎭" + Format.Code(PrettyCurrentTime(g)) +
|
||||
// GetText(logChannel.Guild, strs.user_status_change(,
|
||||
// "👤" + Format.Bold(usr.Username),
|
||||
// Format.Bold(after.Status.ToString()));
|
||||
|
||||
// //if (before.Game?.Name != after.Game?.Name)
|
||||
// //{
|
||||
// // if (str != "")
|
||||
// // str += "\n";
|
||||
// // str += $"👾`{prettyCurrentTime}`👤__**{usr.Username}**__ is now playing **{after.Game?.Name}**.";
|
||||
// //}
|
||||
|
||||
// PresenceUpdates.AddOrUpdate(logChannel, new List<string>() { str }, (id, list) => { list.Add(str); return list; });
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// // ignored
|
||||
// }
|
||||
// });
|
||||
// return Task.CompletedTask;
|
||||
//}
|
||||
|
||||
private Task _client_UserLeft(IGuildUser usr)
|
||||
{
|
||||
var _ = Task.Run(async () =>
|
||||
@@ -912,7 +875,8 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
try
|
||||
{
|
||||
if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.UserLeftId is null))
|
||||
|| (logSetting.UserLeftId is null)
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == usr.Id && ilc.ItemType == IgnoredItemType.User))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -987,7 +951,8 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
try
|
||||
{
|
||||
if (!GuildLogSettings.TryGetValue(guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.UserUnbannedId is null))
|
||||
|| (logSetting.UserUnbannedId is null)
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == usr.Id && ilc.ItemType == IgnoredItemType.User))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -1021,7 +986,8 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
try
|
||||
{
|
||||
if (!GuildLogSettings.TryGetValue(guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.UserBannedId is null))
|
||||
|| (logSetting.UserBannedId is null)
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == usr.Id && ilc.ItemType == IgnoredItemType.User))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -1069,7 +1035,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
|
||||
if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.MessageDeletedId is null)
|
||||
|| logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == channel.Id))
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == channel.Id && ilc.ItemType == IgnoredItemType.Channel))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
@@ -1127,7 +1093,7 @@ namespace NadekoBot.Modules.Administration.Services
|
||||
|
||||
if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out LogSetting logSetting)
|
||||
|| (logSetting.MessageUpdatedId is null)
|
||||
|| logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == channel.Id))
|
||||
|| logSetting.LogIgnores.Any(ilc => ilc.LogItemId == channel.Id && ilc.ItemType == IgnoredItemType.Channel))
|
||||
return;
|
||||
|
||||
ITextChannel logChannel;
|
||||
|
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using Cloneable;
|
||||
using NadekoBot.Common;
|
||||
using NadekoBot.Common.Yml;
|
||||
using YamlDotNet.Serialization;
|
||||
|
||||
namespace NadekoBot.Modules.Gambling.Common
|
||||
{
|
||||
@@ -179,7 +180,8 @@ default is 0.02, which is 2%")]
|
||||
|
||||
public MultipliersData Multipliers { get; set; } = new MultipliersData();
|
||||
|
||||
[Comment(@"List of items available for gifting.")]
|
||||
[Comment(@"List of items available for gifting.
|
||||
If negative is true, gift will instead reduce waifu value.")]
|
||||
public List<WaifuItemModel> Items { get; set; } = new List<WaifuItemModel>();
|
||||
|
||||
public WaifuConfig()
|
||||
@@ -260,6 +262,11 @@ Default 1 (meaning no effect)")]
|
||||
Default 0.95 (meaning 95%)
|
||||
Example: If a waifu is worth 1000, and she receives a gift worth 100, her new value will be 1095)")]
|
||||
public decimal GiftEffect { get; set; } = 0.95M;
|
||||
|
||||
[Comment(@"What percentage of the value of the gift will a waifu lose when she's gifted a gift marked as 'negative'.
|
||||
Default 0.5 (meaning 50%)
|
||||
Example: If a waifu is worth 1000, and she receives a negative gift worth 100, her new value will be 950)")]
|
||||
public decimal NegativeGiftEffect { get; set; } = 0.50M;
|
||||
}
|
||||
|
||||
[Cloneable]
|
||||
@@ -268,19 +275,24 @@ Example: If a waifu is worth 1000, and she receives a gift worth 100, her new va
|
||||
public string ItemEmoji { get; set; }
|
||||
public int Price { get; set; }
|
||||
public string Name { get; set; }
|
||||
|
||||
[YamlMember(DefaultValuesHandling = DefaultValuesHandling.OmitDefaults)]
|
||||
public bool Negative { get; set; }
|
||||
|
||||
public WaifuItemModel()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public WaifuItemModel(string itemEmoji, int price, string name)
|
||||
public WaifuItemModel(string itemEmoji, int price, string name, bool negative = false)
|
||||
{
|
||||
ItemEmoji = itemEmoji;
|
||||
Price = price;
|
||||
Name = name;
|
||||
Negative = negative;
|
||||
}
|
||||
|
||||
|
||||
public override string ToString() => Name;
|
||||
}
|
||||
|
||||
|
@@ -1,14 +0,0 @@
|
||||
namespace NadekoBot.Modules.Gambling.Common.Waifu
|
||||
{
|
||||
public struct WaifuProfileTitle
|
||||
{
|
||||
public int Count { get; }
|
||||
public string Title { get; }
|
||||
|
||||
public WaifuProfileTitle(int count, string title)
|
||||
{
|
||||
Count = count;
|
||||
Title = title;
|
||||
}
|
||||
}
|
||||
}
|
@@ -17,11 +17,6 @@ namespace NadekoBot.Modules.Gambling
|
||||
[Group]
|
||||
public class CurrencyEventsCommands : GamblingSubmodule<CurrencyEventsService>
|
||||
{
|
||||
public enum OtherEvent
|
||||
{
|
||||
BotListUpvoters
|
||||
}
|
||||
|
||||
public CurrencyEventsCommands(GamblingConfigService gamblingConf) : base(gamblingConf)
|
||||
{
|
||||
}
|
||||
@@ -37,41 +32,36 @@ namespace NadekoBot.Modules.Gambling
|
||||
ctx.Channel.Id,
|
||||
ev,
|
||||
opts,
|
||||
GetEmbed
|
||||
).ConfigureAwait(false))
|
||||
GetEmbed))
|
||||
{
|
||||
await ReplyErrorLocalizedAsync(strs.start_event_fail).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private IEmbedBuilder GetEmbed(CurrencyEvent.Type type, EventOptions opts, long currentPot)
|
||||
{
|
||||
switch (type)
|
||||
return type switch
|
||||
{
|
||||
case CurrencyEvent.Type.Reaction:
|
||||
return _eb.Create()
|
||||
.WithOkColor()
|
||||
.WithTitle(GetText(strs.event_title(type.ToString())))
|
||||
.WithDescription(GetReactionDescription(opts.Amount, currentPot))
|
||||
.WithFooter(GetText(strs.event_duration_footer(opts.Hours)));
|
||||
case CurrencyEvent.Type.GameStatus:
|
||||
return _eb.Create()
|
||||
.WithOkColor()
|
||||
.WithTitle(GetText(strs.event_title(type.ToString())))
|
||||
.WithDescription(GetGameStatusDescription(opts.Amount, currentPot))
|
||||
.WithFooter(GetText(strs.event_duration_footer(opts.Hours)));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
throw new ArgumentOutOfRangeException(nameof(type));
|
||||
CurrencyEvent.Type.Reaction => _eb.Create()
|
||||
.WithOkColor()
|
||||
.WithTitle(GetText(strs.event_title(type.ToString())))
|
||||
.WithDescription(GetReactionDescription(opts.Amount, currentPot))
|
||||
.WithFooter(GetText(strs.event_duration_footer(opts.Hours))),
|
||||
CurrencyEvent.Type.GameStatus => _eb.Create()
|
||||
.WithOkColor()
|
||||
.WithTitle(GetText(strs.event_title(type.ToString())))
|
||||
.WithDescription(GetGameStatusDescription(opts.Amount, currentPot))
|
||||
.WithFooter(GetText(strs.event_duration_footer(opts.Hours))),
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(type))
|
||||
};
|
||||
}
|
||||
|
||||
private string GetReactionDescription(long amount, long potSize)
|
||||
{
|
||||
string potSizeStr = Format.Bold(potSize == 0
|
||||
var potSizeStr = Format.Bold(potSize == 0
|
||||
? "∞" + CurrencySign
|
||||
: potSize.ToString() + CurrencySign);
|
||||
: potSize + CurrencySign);
|
||||
|
||||
return GetText(strs.new_reaction_event(
|
||||
CurrencySign,
|
||||
Format.Bold(amount + CurrencySign),
|
||||
@@ -80,9 +70,10 @@ namespace NadekoBot.Modules.Gambling
|
||||
|
||||
private string GetGameStatusDescription(long amount, long potSize)
|
||||
{
|
||||
string potSizeStr = Format.Bold(potSize == 0
|
||||
var potSizeStr = Format.Bold(potSize == 0
|
||||
? "∞" + CurrencySign
|
||||
: potSize.ToString() + CurrencySign);
|
||||
: potSize + CurrencySign);
|
||||
|
||||
return GetText(strs.new_gamestatus_event(
|
||||
CurrencySign,
|
||||
Format.Bold(amount + CurrencySign),
|
||||
|
@@ -1,7 +1,11 @@
|
||||
using NadekoBot.Common;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NadekoBot.Common;
|
||||
using NadekoBot.Common.Configs;
|
||||
using NadekoBot.Modules.Gambling.Common;
|
||||
using NadekoBot.Services;
|
||||
using NadekoBot.Services.Database.Models;
|
||||
|
||||
namespace NadekoBot.Modules.Gambling.Services
|
||||
{
|
||||
@@ -34,9 +38,31 @@ namespace NadekoBot.Modules.Gambling.Services
|
||||
AddParsedProp("waifu.multi.divorce_value", gs => gs.Waifu.Multipliers.DivorceNewValue, decimal.TryParse, ConfigPrinters.ToString, val => val > 0);
|
||||
AddParsedProp("waifu.multi.all_gifts", gs => gs.Waifu.Multipliers.AllGiftPrices, decimal.TryParse, ConfigPrinters.ToString, val => val > 0);
|
||||
AddParsedProp("waifu.multi.gift_effect", gs => gs.Waifu.Multipliers.GiftEffect, decimal.TryParse, ConfigPrinters.ToString, val => val >= 0);
|
||||
AddParsedProp("waifu.multi.negative_gift_effect", gs => gs.Waifu.Multipliers.NegativeGiftEffect, decimal.TryParse, ConfigPrinters.ToString, val => val >= 0);
|
||||
AddParsedProp("decay.percent", gs => gs.Decay.Percent, decimal.TryParse, ConfigPrinters.ToString, val => val >= 0 && val <= 1);
|
||||
AddParsedProp("decay.maxdecay", gs => gs.Decay.MaxDecay, int.TryParse, ConfigPrinters.ToString, val => val >= 0);
|
||||
AddParsedProp("decay.threshold", gs => gs.Decay.MinThreshold, int.TryParse, ConfigPrinters.ToString, val => val >= 0);
|
||||
|
||||
Migrate();
|
||||
}
|
||||
|
||||
private readonly IEnumerable<WaifuItemModel> antiGiftSeed = new[]
|
||||
{
|
||||
new WaifuItemModel("🥀", 100, "WiltedRose", true),
|
||||
new WaifuItemModel("✂️", 1000, "Haircut", true),
|
||||
new WaifuItemModel("🧻", 10000, "ToiletPaper", true),
|
||||
};
|
||||
|
||||
public void Migrate()
|
||||
{
|
||||
if (_data.Version < 2)
|
||||
{
|
||||
ModifyConfig(c =>
|
||||
{
|
||||
c.Waifu.Items = c.Waifu.Items.Concat(antiGiftSeed).ToList();
|
||||
c.Version = 2;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -394,19 +394,28 @@ namespace NadekoBot.Modules.Gambling.Services
|
||||
});
|
||||
}
|
||||
|
||||
w.Items.Add(new WaifuItem()
|
||||
if (!itemObj.Negative)
|
||||
{
|
||||
Name = itemObj.Name.ToLowerInvariant(),
|
||||
ItemEmoji = itemObj.ItemEmoji,
|
||||
});
|
||||
|
||||
if (w.Claimer?.UserId == from.Id)
|
||||
{
|
||||
w.Price += (int) (itemObj.Price * _gss.Data.Waifu.Multipliers.GiftEffect);
|
||||
w.Items.Add(new WaifuItem()
|
||||
{
|
||||
Name = itemObj.Name.ToLowerInvariant(),
|
||||
ItemEmoji = itemObj.ItemEmoji,
|
||||
});
|
||||
|
||||
if (w.Claimer?.UserId == from.Id)
|
||||
{
|
||||
w.Price += (int)(itemObj.Price * _gss.Data.Waifu.Multipliers.GiftEffect);
|
||||
}
|
||||
else
|
||||
{
|
||||
w.Price += itemObj.Price / 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
w.Price += itemObj.Price / 2;
|
||||
w.Price -= (int)(itemObj.Price * _gss.Data.Waifu.Multipliers.NegativeGiftEffect);
|
||||
if (w.Price < 1)
|
||||
w.Price = 1;
|
||||
}
|
||||
|
||||
await uow.SaveChangesAsync();
|
||||
@@ -512,7 +521,7 @@ namespace NadekoBot.Modules.Gambling.Services
|
||||
{
|
||||
var conf = _gss.Data;
|
||||
return conf.Waifu.Items
|
||||
.Select(x => new WaifuItemModel(x.ItemEmoji, (int)(x.Price * conf.Waifu.Multipliers.AllGiftPrices), x.Name))
|
||||
.Select(x => new WaifuItemModel(x.ItemEmoji, (int)(x.Price * conf.Waifu.Multipliers.AllGiftPrices), x.Name, x.Negative))
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
@@ -225,6 +225,9 @@ namespace NadekoBot.Modules.Gambling
|
||||
[BotPerm(GuildPerm.ManageRoles)]
|
||||
public async Task ShopAdd(Role _, int price, [Leftover] IRole role)
|
||||
{
|
||||
if (price < 1)
|
||||
return;
|
||||
|
||||
var entry = new ShopEntry()
|
||||
{
|
||||
Name = "-",
|
||||
@@ -252,8 +255,11 @@ namespace NadekoBot.Modules.Gambling
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
public async Task ShopAdd(List _, int price, [Leftover]string name)
|
||||
public async Task ShopAdd(List _, int price, [Leftover] string name)
|
||||
{
|
||||
if (price < 1)
|
||||
return;
|
||||
|
||||
var entry = new ShopEntry()
|
||||
{
|
||||
Name = name.TrimTo(100),
|
||||
@@ -266,13 +272,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
{
|
||||
var entries = new IndexedCollection<ShopEntry>(uow.GuildConfigsForId(ctx.Guild.Id,
|
||||
set => set.Include(x => x.ShopEntries)
|
||||
.ThenInclude(x => x.Items)).ShopEntries)
|
||||
.ThenInclude(x => x.Items)).ShopEntries)
|
||||
{
|
||||
entry
|
||||
};
|
||||
uow.GuildConfigsForId(ctx.Guild.Id, set => set).ShopEntries = entries;
|
||||
uow.SaveChanges();
|
||||
}
|
||||
|
||||
await ctx.Channel.EmbedAsync(EntryToEmbed(entry)
|
||||
.WithTitle(GetText(strs.shop_item_add))).ConfigureAwait(false);
|
||||
}
|
||||
|
@@ -317,10 +317,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
.WithOkColor();
|
||||
|
||||
waifuItems
|
||||
.OrderBy(x => x.Price)
|
||||
.OrderBy(x => x.Negative)
|
||||
.ThenBy(x => x.Price)
|
||||
.Skip(9 * cur)
|
||||
.Take(9)
|
||||
.ForEach(x => embed.AddField($"{x.ItemEmoji} {x.Name}", x.Price, true));
|
||||
.ForEach(x => embed
|
||||
.AddField($"{(!x.Negative ? string.Empty : "\\💔")} {x.ItemEmoji} {x.Name}",
|
||||
Format.Bold(x.Price.ToString()) + _config.Currency.Sign,
|
||||
true));
|
||||
|
||||
return embed;
|
||||
}, waifuItems.Count, 9);
|
||||
|
@@ -0,0 +1,72 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using NadekoBot.Common;
|
||||
using NadekoBot.Common.Yml;
|
||||
using Serilog;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Hangman
|
||||
{
|
||||
public sealed class DefaultHangmanSource : IHangmanSource
|
||||
{
|
||||
private IReadOnlyDictionary<string, HangmanTerm[]> _terms = new Dictionary<string, HangmanTerm[]>();
|
||||
private readonly Random _rng;
|
||||
|
||||
public DefaultHangmanSource()
|
||||
{
|
||||
_rng = new NadekoRandom();
|
||||
Reload();
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
if (!Directory.Exists("data/hangman"))
|
||||
{
|
||||
Log.Error("Hangman game won't work. Folder 'data/hangman' is missing.");
|
||||
return;
|
||||
}
|
||||
|
||||
var qs = new Dictionary<string, HangmanTerm[]>();
|
||||
foreach (var file in Directory.EnumerateFiles("data/hangman/", "*.yml"))
|
||||
{
|
||||
try
|
||||
{
|
||||
var data = Yaml.Deserializer.Deserialize<HangmanTerm[]>(File.ReadAllText(file));
|
||||
qs[Path.GetFileNameWithoutExtension(file).ToLowerInvariant()] = data;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex, "Loading {HangmanFile} failed.", file);
|
||||
}
|
||||
}
|
||||
|
||||
_terms = qs;
|
||||
|
||||
Log.Information("Loaded {HangmanCategoryCount} hangman categories.", qs.Count);
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<string> GetCategories()
|
||||
=> _terms.Keys.ToList();
|
||||
|
||||
public bool GetTerm(string? category, [NotNullWhen(true)] out HangmanTerm? term)
|
||||
{
|
||||
if (category is null)
|
||||
{
|
||||
var cats = GetCategories();
|
||||
category = cats.ElementAt(_rng.Next(0, cats.Count));
|
||||
}
|
||||
|
||||
if (_terms.TryGetValue(category, out var terms))
|
||||
{
|
||||
term = terms[_rng.Next(0, terms.Length)];
|
||||
return true;
|
||||
}
|
||||
|
||||
term = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,19 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Common.Hangman.Exceptions
|
||||
{
|
||||
public class TermNotFoundException : Exception
|
||||
{
|
||||
public TermNotFoundException() : base("Term of that type couldn't be found")
|
||||
{
|
||||
}
|
||||
|
||||
public TermNotFoundException(string message) : base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public TermNotFoundException(string message, Exception innerException) : base(message, innerException)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,170 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using NadekoBot.Extensions;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Common.Hangman
|
||||
{
|
||||
public sealed class Hangman : IDisposable
|
||||
{
|
||||
public string TermType { get; }
|
||||
public TermPool TermPool { get; }
|
||||
public HangmanObject Term { get; }
|
||||
|
||||
public string ScrambledWord => "`" + String.Concat(Term.Word.Select(c =>
|
||||
{
|
||||
if (c == ' ')
|
||||
return " \u2000";
|
||||
if (!(char.IsLetter(c) || char.IsDigit(c)))
|
||||
return $" {c}";
|
||||
|
||||
c = char.ToLowerInvariant(c);
|
||||
return _previousGuesses.Contains(c) ? $" {c}" : " ◯";
|
||||
})) + "`";
|
||||
|
||||
private Phase _currentPhase = Phase.Active;
|
||||
public Phase CurrentPhase
|
||||
{
|
||||
get => _currentPhase;
|
||||
set
|
||||
{
|
||||
if (value == Phase.Ended)
|
||||
_endingCompletionSource.TrySetResult(true);
|
||||
|
||||
_currentPhase = value;
|
||||
}
|
||||
}
|
||||
|
||||
private readonly SemaphoreSlim _locker = new SemaphoreSlim(1, 1);
|
||||
|
||||
private readonly HashSet<ulong> _recentUsers = new HashSet<ulong>();
|
||||
|
||||
public uint Errors { get; private set; } = 0;
|
||||
public uint MaxErrors { get; } = 6;
|
||||
|
||||
public event Func<Hangman, string, ulong, Task> OnGameEnded = delegate { return Task.CompletedTask; };
|
||||
public event Func<Hangman, string, char, Task> OnLetterAlreadyUsed = delegate { return Task.CompletedTask; };
|
||||
public event Func<Hangman, string, char, Task> OnGuessFailed = delegate { return Task.CompletedTask; };
|
||||
public event Func<Hangman, string, char, Task> OnGuessSucceeded = delegate { return Task.CompletedTask; };
|
||||
|
||||
private readonly HashSet<char> _previousGuesses = new HashSet<char>();
|
||||
public ImmutableArray<char> PreviousGuesses => _previousGuesses.ToImmutableArray();
|
||||
|
||||
private readonly TaskCompletionSource<bool> _endingCompletionSource = new TaskCompletionSource<bool>();
|
||||
|
||||
public Task EndedTask => _endingCompletionSource.Task;
|
||||
|
||||
public Hangman(string type, TermPool tp = null)
|
||||
{
|
||||
this.TermType = type.Trim().ToLowerInvariant().ToTitleCase();
|
||||
this.TermPool = tp ?? new TermPool();
|
||||
this.Term = this.TermPool.GetTerm(type);
|
||||
}
|
||||
|
||||
private void AddError()
|
||||
{
|
||||
if (++Errors > MaxErrors)
|
||||
{
|
||||
var _ = OnGameEnded(this, null, 0);
|
||||
CurrentPhase = Phase.Ended;
|
||||
}
|
||||
}
|
||||
|
||||
public string GetHangman() => $@". ┌─────┐
|
||||
.┃...............┋
|
||||
.┃...............┋
|
||||
.┃{(Errors > 0 ? ".............😲" : "")}
|
||||
.┃{(Errors > 1 ? "............./" : "")} {(Errors > 2 ? "|" : "")} {(Errors > 3 ? "\\" : "")}
|
||||
.┃{(Errors > 4 ? "............../" : "")} {(Errors > 5 ? "\\" : "")}
|
||||
/-\";
|
||||
|
||||
public async Task Input(ulong userId, string userName, string input)
|
||||
{
|
||||
if (CurrentPhase == Phase.Ended)
|
||||
return;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(input))
|
||||
return;
|
||||
|
||||
input = input.Trim().ToLowerInvariant();
|
||||
|
||||
await _locker.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
if (CurrentPhase == Phase.Ended)
|
||||
return;
|
||||
|
||||
if (input.Length > 1) // tried to guess the whole word
|
||||
{
|
||||
if (input != Term.Word) // failed
|
||||
return;
|
||||
|
||||
var _ = OnGameEnded?.Invoke(this, userName, userId);
|
||||
CurrentPhase = Phase.Ended;
|
||||
return;
|
||||
}
|
||||
|
||||
var ch = input[0];
|
||||
|
||||
if (!char.IsLetterOrDigit(ch))
|
||||
return;
|
||||
|
||||
if (!_recentUsers.Add(userId)) // don't let a single user spam guesses
|
||||
return;
|
||||
|
||||
if (!_previousGuesses.Add(ch)) // that letter was already guessed
|
||||
{
|
||||
var _ = OnLetterAlreadyUsed?.Invoke(this, userName, ch);
|
||||
}
|
||||
else if (!Term.Word.Contains(ch)) // guessed letter doesn't exist
|
||||
{
|
||||
var _ = OnGuessFailed?.Invoke(this, userName, ch);
|
||||
AddError();
|
||||
}
|
||||
else if (Term.Word.All(x => _previousGuesses.IsSupersetOf(Term.Word.ToLowerInvariant()
|
||||
.Where(char.IsLetterOrDigit))))
|
||||
{
|
||||
var _ = OnGameEnded.Invoke(this, userName, userId); // if all letters are guessed
|
||||
CurrentPhase = Phase.Ended;
|
||||
}
|
||||
else // guessed but not last letter
|
||||
{
|
||||
var _ = OnGuessSucceeded?.Invoke(this, userName, ch);
|
||||
_recentUsers.Remove(userId); // he can guess again right away
|
||||
return;
|
||||
}
|
||||
|
||||
var clearSpam = Task.Run(async () =>
|
||||
{
|
||||
await Task.Delay(3000).ConfigureAwait(false); // remove the user from the spamlist after 5 seconds
|
||||
_recentUsers.Remove(userId);
|
||||
});
|
||||
}
|
||||
finally { _locker.Release(); }
|
||||
}
|
||||
|
||||
public async Task Stop()
|
||||
{
|
||||
await _locker.WaitAsync().ConfigureAwait(false);
|
||||
try
|
||||
{
|
||||
CurrentPhase = Phase.Ended;
|
||||
}
|
||||
finally { _locker.Release(); }
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
OnGameEnded = null;
|
||||
OnGuessFailed = null;
|
||||
OnGuessSucceeded = null;
|
||||
OnLetterAlreadyUsed = null;
|
||||
_previousGuesses.Clear();
|
||||
_recentUsers.Clear();
|
||||
// _locker.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
121
src/NadekoBot/Modules/Games/Common/Hangman/HangmanGame.cs
Normal file
121
src/NadekoBot/Modules/Games/Common/Hangman/HangmanGame.cs
Normal file
@@ -0,0 +1,121 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using AngleSharp.Text;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Hangman
|
||||
{
|
||||
public sealed class HangmanGame
|
||||
{
|
||||
public enum Phase { Running, Ended }
|
||||
public enum GuessResult { NoAction, AlreadyTried, Incorrect, Guess, Win }
|
||||
|
||||
public record State(
|
||||
int Errors,
|
||||
Phase Phase,
|
||||
string Word,
|
||||
GuessResult GuessResult,
|
||||
List<char> missedLetters,
|
||||
string ImageUrl)
|
||||
{
|
||||
public bool Failed => Errors > 5;
|
||||
}
|
||||
|
||||
private Phase CurrentPhase { get; set; }
|
||||
|
||||
private readonly HashSet<char> _incorrect = new();
|
||||
private readonly HashSet<char> _correct = new();
|
||||
private readonly HashSet<char> _remaining = new();
|
||||
|
||||
private readonly string _word;
|
||||
private readonly string _imageUrl;
|
||||
|
||||
public HangmanGame(HangmanTerm term)
|
||||
{
|
||||
_word = term.Word;
|
||||
_imageUrl = term.ImageUrl;
|
||||
|
||||
_remaining = _word
|
||||
.ToLowerInvariant()
|
||||
.Where(x => x.IsLetter())
|
||||
.Select(char.ToLowerInvariant)
|
||||
.ToHashSet();
|
||||
}
|
||||
|
||||
public State GetState(GuessResult guessResult = GuessResult.NoAction)
|
||||
=> new State(_incorrect.Count,
|
||||
CurrentPhase,
|
||||
CurrentPhase == Phase.Ended
|
||||
? _word
|
||||
: GetScrambledWord(),
|
||||
guessResult,
|
||||
_incorrect.ToList(),
|
||||
CurrentPhase == Phase.Ended
|
||||
? _imageUrl
|
||||
: string.Empty);
|
||||
|
||||
private string GetScrambledWord()
|
||||
{
|
||||
Span<char> output = stackalloc char[_word.Length * 2];
|
||||
for (var i = 0; i < _word.Length; i++)
|
||||
{
|
||||
var ch = _word[i];
|
||||
if (ch == ' ')
|
||||
output[i*2] = ' ';
|
||||
if (!ch.IsLetter() || !_remaining.Contains(char.ToLowerInvariant(ch)))
|
||||
output[i*2] = ch;
|
||||
else
|
||||
output[i*2] = '_';
|
||||
|
||||
output[i * 2 + 1] = ' ';
|
||||
}
|
||||
|
||||
return new(output);
|
||||
}
|
||||
|
||||
public State Guess(string guess)
|
||||
{
|
||||
if (CurrentPhase != Phase.Running)
|
||||
return GetState(GuessResult.NoAction);
|
||||
|
||||
guess = guess.Trim();
|
||||
if (guess.Length > 1)
|
||||
{
|
||||
if (guess.Equals(_word, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
CurrentPhase = Phase.Ended;
|
||||
return GetState(GuessResult.Win);
|
||||
}
|
||||
|
||||
return GetState(GuessResult.NoAction);
|
||||
}
|
||||
|
||||
var charGuess = guess[0];
|
||||
if (!char.IsLetter(charGuess))
|
||||
return GetState(GuessResult.NoAction);
|
||||
|
||||
if (_incorrect.Contains(charGuess) || _correct.Contains(charGuess))
|
||||
return GetState(GuessResult.AlreadyTried);
|
||||
|
||||
if (_remaining.Remove(charGuess))
|
||||
{
|
||||
if (_remaining.Count == 0)
|
||||
{
|
||||
CurrentPhase = Phase.Ended;
|
||||
return GetState(GuessResult.Win);
|
||||
}
|
||||
|
||||
return GetState(GuessResult.Guess);
|
||||
}
|
||||
|
||||
_incorrect.Add(charGuess);
|
||||
if (_incorrect.Count > 5)
|
||||
{
|
||||
CurrentPhase = Phase.Ended;
|
||||
return GetState(GuessResult.Incorrect);
|
||||
}
|
||||
|
||||
return GetState(GuessResult.Incorrect);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,17 +0,0 @@
|
||||
using NadekoBot.Extensions;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Common.Hangman
|
||||
{
|
||||
public class HangmanObject
|
||||
{
|
||||
public string Word { get; set; }
|
||||
public string ImageUrl { get; set; }
|
||||
|
||||
public string GetWord()
|
||||
{
|
||||
var term = Word.ToTitleCase();
|
||||
|
||||
return $"[{term}](https://en.wikipedia.org/wiki/{term.Replace(' ', '_')})";
|
||||
}
|
||||
}
|
||||
}
|
147
src/NadekoBot/Modules/Games/Common/Hangman/HangmanService.cs
Normal file
147
src/NadekoBot/Modules/Games/Common/Hangman/HangmanService.cs
Normal file
@@ -0,0 +1,147 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Threading.Tasks;
|
||||
using Discord;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using NadekoBot.Common.ModuleBehaviors;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Games.Services;
|
||||
using NadekoBot.Services;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Hangman
|
||||
{
|
||||
public sealed class HangmanService : IHangmanService, ILateExecutor
|
||||
{
|
||||
private readonly ConcurrentDictionary<ulong, HangmanGame> _hangmanGames = new();
|
||||
private readonly IHangmanSource _source;
|
||||
private readonly IEmbedBuilderService _eb;
|
||||
private readonly GamesConfigService _gcs;
|
||||
private readonly ICurrencyService _cs;
|
||||
private readonly IMemoryCache _cdCache;
|
||||
private readonly object _locker = new();
|
||||
|
||||
public HangmanService(IHangmanSource source, IEmbedBuilderService eb, GamesConfigService gcs,
|
||||
ICurrencyService cs, IMemoryCache cdCache)
|
||||
{
|
||||
_source = source;
|
||||
_eb = eb;
|
||||
_gcs = gcs;
|
||||
_cs = cs;
|
||||
_cdCache = cdCache;
|
||||
}
|
||||
|
||||
public bool StartHangman(
|
||||
ulong channelId,
|
||||
string? category,
|
||||
[NotNullWhen(true)] out HangmanGame.State? state)
|
||||
{
|
||||
state = null;
|
||||
if (!_source.GetTerm(category, out var term))
|
||||
return false;
|
||||
|
||||
|
||||
var game = new HangmanGame(term);
|
||||
lock (_locker)
|
||||
{
|
||||
var hc = _hangmanGames.GetOrAdd(channelId, game);
|
||||
if (hc == game)
|
||||
{
|
||||
state = hc.GetState();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public ValueTask<bool> StopHangman(ulong channelId)
|
||||
{
|
||||
lock (_locker)
|
||||
{
|
||||
if (_hangmanGames.TryRemove(channelId, out var game))
|
||||
{
|
||||
return new(true);
|
||||
}
|
||||
}
|
||||
|
||||
return new(false);
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<string> GetHangmanTypes()
|
||||
=> _source.GetCategories();
|
||||
|
||||
public async Task LateExecute(IGuild guild, IUserMessage msg)
|
||||
{
|
||||
if (_hangmanGames.ContainsKey(msg.Channel.Id))
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(msg.Content))
|
||||
return;
|
||||
|
||||
if (_cdCache.TryGetValue(msg.Author.Id, out _))
|
||||
return;
|
||||
|
||||
HangmanGame.State state;
|
||||
long rew = 0;
|
||||
lock (_locker)
|
||||
{
|
||||
if (!_hangmanGames.TryGetValue(msg.Channel.Id, out var game))
|
||||
return;
|
||||
|
||||
state = game.Guess(msg.Content.ToLowerInvariant());
|
||||
|
||||
if (state.GuessResult == HangmanGame.GuessResult.NoAction)
|
||||
return;
|
||||
|
||||
if (state.GuessResult == HangmanGame.GuessResult.Incorrect
|
||||
|| state.GuessResult == HangmanGame.GuessResult.AlreadyTried)
|
||||
{
|
||||
_cdCache.Set(msg.Author.Id, string.Empty, new MemoryCacheEntryOptions()
|
||||
{
|
||||
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(3)
|
||||
});
|
||||
}
|
||||
|
||||
if (state.Phase == HangmanGame.Phase.Ended)
|
||||
if (_hangmanGames.TryRemove(msg.Channel.Id, out _))
|
||||
rew = _gcs.Data.Hangman.CurrencyReward;
|
||||
}
|
||||
|
||||
if (rew > 0)
|
||||
await _cs.AddAsync(msg.Author, "hangman win", rew, gamble: true);
|
||||
|
||||
await SendState((ITextChannel)msg.Channel, msg.Author, msg.Content, state);
|
||||
}
|
||||
}
|
||||
|
||||
private Task<IUserMessage> SendState(ITextChannel channel, IUser user, string content, HangmanGame.State state)
|
||||
{
|
||||
var embed = Games.HangmanCommands.GetEmbed(_eb, state);
|
||||
if (state.GuessResult == HangmanGame.GuessResult.Guess)
|
||||
embed.WithDescription($"{user} guessed the letter {content}!")
|
||||
.WithOkColor();
|
||||
else if (state.GuessResult == HangmanGame.GuessResult.Incorrect && state.Failed)
|
||||
embed.WithDescription($"{user} Letter {content} doesn't exist! Game over!")
|
||||
.WithErrorColor();
|
||||
else if (state.GuessResult == HangmanGame.GuessResult.Incorrect)
|
||||
embed.WithDescription($"{user} Letter {content} doesn't exist!")
|
||||
.WithErrorColor();
|
||||
else if (state.GuessResult == HangmanGame.GuessResult.AlreadyTried)
|
||||
embed.WithDescription($"{user} Letter {content} has already been used.")
|
||||
.WithPendingColor();
|
||||
else if (state.GuessResult == HangmanGame.GuessResult.Win)
|
||||
embed.WithDescription($"{user} won!")
|
||||
.WithOkColor();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(state.ImageUrl)
|
||||
&& Uri.IsWellFormedUriString(state.ImageUrl, UriKind.Absolute))
|
||||
{
|
||||
embed.WithImageUrl(state.ImageUrl);
|
||||
}
|
||||
|
||||
return channel.EmbedAsync(embed);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
namespace NadekoBot.Modules.Games.Hangman
|
||||
{
|
||||
public sealed class HangmanTerm
|
||||
{
|
||||
public string Word { get; set; }
|
||||
public string ImageUrl { get; set; }
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
#nullable enable
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Hangman
|
||||
{
|
||||
public interface IHangmanService
|
||||
{
|
||||
bool StartHangman(ulong channelId, string? category, [NotNullWhen(true)] out HangmanGame.State? hangmanController);
|
||||
ValueTask<bool> StopHangman(ulong channelId);
|
||||
IReadOnlyCollection<string> GetHangmanTypes();
|
||||
}
|
||||
}
|
14
src/NadekoBot/Modules/Games/Common/Hangman/IHangmanSource.cs
Normal file
14
src/NadekoBot/Modules/Games/Common/Hangman/IHangmanSource.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
#nullable enable
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using NadekoBot.Services;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Hangman
|
||||
{
|
||||
public interface IHangmanSource : INService
|
||||
{
|
||||
public IReadOnlyCollection<string> GetCategories();
|
||||
public void Reload();
|
||||
public bool GetTerm(string? category, [NotNullWhen(true)] out HangmanTerm? term);
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
namespace NadekoBot.Modules.Games.Common.Hangman
|
||||
{
|
||||
public enum Phase
|
||||
{
|
||||
Active,
|
||||
Ended,
|
||||
}
|
||||
}
|
@@ -1,50 +0,0 @@
|
||||
using NadekoBot.Common;
|
||||
using NadekoBot.Modules.Games.Common.Hangman.Exceptions;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Serilog;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Common.Hangman
|
||||
{
|
||||
public class TermPool
|
||||
{
|
||||
const string termsPath = "data/hangman.json";
|
||||
|
||||
public IReadOnlyDictionary<string, HangmanObject[]> Data { get; } = new Dictionary<string, HangmanObject[]>();
|
||||
public TermPool()
|
||||
{
|
||||
try
|
||||
{
|
||||
Data = JsonConvert.DeserializeObject<Dictionary<string, HangmanObject[]>>(File.ReadAllText(termsPath));
|
||||
Data = Data.ToDictionary(
|
||||
x => x.Key.ToLowerInvariant(),
|
||||
x => x.Value);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Warning(ex, "Error loading Hangman Term pool");
|
||||
}
|
||||
}
|
||||
|
||||
public HangmanObject GetTerm(string type)
|
||||
{
|
||||
type = type?.Trim().ToLowerInvariant();
|
||||
var rng = new NadekoRandom();
|
||||
|
||||
if (type == "random")
|
||||
{
|
||||
type = Data.Keys.ToArray()[rng.Next(0, Data.Keys.Count())];
|
||||
}
|
||||
if (!Data.TryGetValue(type, out var termTypes) || termTypes.Length == 0)
|
||||
throw new TermNotFoundException();
|
||||
|
||||
var obj = termTypes[rng.Next(0, termTypes.Length)];
|
||||
|
||||
obj.Word = obj.Word.Trim().ToLowerInvariant();
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,14 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace NadekoBot.Modules.Games.Common.Hangman
|
||||
{
|
||||
[Flags]
|
||||
public enum TermTypes
|
||||
{
|
||||
Countries = 0,
|
||||
Movies = 1,
|
||||
Animals = 2,
|
||||
Things = 4,
|
||||
Random = 8,
|
||||
}
|
||||
}
|
@@ -1,13 +1,10 @@
|
||||
#nullable enable
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Extensions;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Discord;
|
||||
using Discord.WebSocket;
|
||||
using NadekoBot.Common.Attributes;
|
||||
using NadekoBot.Modules.Games.Common.Hangman;
|
||||
using NadekoBot.Modules.Games.Services;
|
||||
using NadekoBot.Modules.Games.Common.Hangman.Exceptions;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Games.Hangman;
|
||||
using NadekoBot.Services;
|
||||
|
||||
namespace NadekoBot.Modules.Games
|
||||
@@ -15,136 +12,74 @@ namespace NadekoBot.Modules.Games
|
||||
public partial class Games
|
||||
{
|
||||
[Group]
|
||||
public class HangmanCommands : NadekoSubmodule<GamesService>
|
||||
public class HangmanCommands : NadekoSubmodule<IHangmanService>
|
||||
{
|
||||
private readonly DiscordSocketClient _client;
|
||||
private readonly ICurrencyService _cs;
|
||||
private readonly GamesConfigService _gcs;
|
||||
|
||||
public HangmanCommands(DiscordSocketClient client, ICurrencyService cs, GamesConfigService gcs)
|
||||
{
|
||||
_client = client;
|
||||
_cs = cs;
|
||||
_gcs = gcs;
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Hangmanlist()
|
||||
{
|
||||
await SendConfirmAsync(Format.Code(GetText(strs.hangman_types(Prefix)) + "\n" + string.Join("\n", _service.TermPool.Data.Keys)));
|
||||
await SendConfirmAsync(
|
||||
GetText(strs.hangman_types(Prefix)),
|
||||
_service.GetHangmanTypes().JoinWith('\n'));
|
||||
}
|
||||
|
||||
private static string Draw(HangmanGame.State state)
|
||||
{
|
||||
return $@". ┌─────┐
|
||||
.┃...............┋
|
||||
.┃...............┋
|
||||
.┃{(state.Errors > 0 ? ".............😲" : "")}
|
||||
.┃{(state.Errors > 1 ? "............./" : "")} {(state.Errors > 2 ? "|" : "")} {(state.Errors > 3 ? "\\" : "")}
|
||||
.┃{(state.Errors > 4 ? "............../" : "")} {(state.Errors > 5 ? "\\" : "")}
|
||||
/-\";
|
||||
}
|
||||
|
||||
public static IEmbedBuilder GetEmbed(IEmbedBuilderService eb, HangmanGame.State state)
|
||||
{
|
||||
if (state.Phase == HangmanGame.Phase.Running)
|
||||
return eb.Create()
|
||||
.WithOkColor()
|
||||
.AddField("Hangman", Draw(state))
|
||||
.AddField("Guess", Format.Code(state.Word))
|
||||
.WithFooter(state.missedLetters.JoinWith(' '));
|
||||
|
||||
if (state.Phase == HangmanGame.Phase.Ended && state.Failed)
|
||||
return eb.Create()
|
||||
.WithErrorColor()
|
||||
.AddField("Hangman", Draw(state))
|
||||
.AddField("Guess", Format.Code(state.Word))
|
||||
.WithFooter(state.missedLetters.JoinWith(' '));
|
||||
else
|
||||
{
|
||||
return eb.Create()
|
||||
.WithOkColor()
|
||||
.AddField("Hangman", Draw(state))
|
||||
.AddField("Guess", Format.Code(state.Word))
|
||||
.WithFooter(state.missedLetters.JoinWith(' '));
|
||||
}
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Hangman([Leftover]string type = "random")
|
||||
public async Task Hangman([Leftover] string? type = null)
|
||||
{
|
||||
Hangman hm;
|
||||
try
|
||||
{
|
||||
hm = new Hangman(type, _service.TermPool);
|
||||
}
|
||||
catch (TermNotFoundException)
|
||||
if (!_service.StartHangman(ctx.Channel.Id, type, out var hangman))
|
||||
{
|
||||
await ReplyErrorLocalizedAsync(strs.hangman_running);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_service.HangmanGames.TryAdd(ctx.Channel.Id, hm))
|
||||
{
|
||||
hm.Dispose();
|
||||
await ReplyErrorLocalizedAsync(strs.hangman_running).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
hm.OnGameEnded += Hm_OnGameEnded;
|
||||
hm.OnGuessFailed += Hm_OnGuessFailed;
|
||||
hm.OnGuessSucceeded += Hm_OnGuessSucceeded;
|
||||
hm.OnLetterAlreadyUsed += Hm_OnLetterAlreadyUsed;
|
||||
_client.MessageReceived += _client_MessageReceived;
|
||||
|
||||
try
|
||||
{
|
||||
await SendConfirmAsync(GetText(strs.hangman_game_started) + $" ({hm.TermType})",
|
||||
hm.ScrambledWord + "\n" + hm.GetHangman())
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
catch { }
|
||||
|
||||
await hm.EndedTask.ConfigureAwait(false);
|
||||
|
||||
_client.MessageReceived -= _client_MessageReceived;
|
||||
_service.HangmanGames.TryRemove(ctx.Channel.Id, out _);
|
||||
hm.Dispose();
|
||||
|
||||
Task _client_MessageReceived(SocketMessage msg)
|
||||
{
|
||||
var _ = Task.Run(() =>
|
||||
{
|
||||
if (ctx.Channel.Id == msg.Channel.Id && !msg.Author.IsBot)
|
||||
return hm.Input(msg.Author.Id, msg.Author.ToString(), msg.Content);
|
||||
else
|
||||
return Task.CompletedTask;
|
||||
});
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
Task Hm_OnGameEnded(Hangman game, string winner, ulong userId)
|
||||
{
|
||||
if (winner is null)
|
||||
{
|
||||
var loseEmbed = _eb.Create().WithTitle($"Hangman Game ({game.TermType}) - Ended")
|
||||
.WithDescription(Format.Bold("You lose."))
|
||||
.AddField("It was", game.Term.GetWord())
|
||||
.WithFooter(string.Join(" ", game.PreviousGuesses))
|
||||
.WithErrorColor();
|
||||
|
||||
if (Uri.IsWellFormedUriString(game.Term.ImageUrl, UriKind.Absolute))
|
||||
loseEmbed.WithImageUrl(game.Term.ImageUrl);
|
||||
|
||||
return ctx.Channel.EmbedAsync(loseEmbed);
|
||||
}
|
||||
|
||||
var reward = _gcs.Data.Hangman.CurrencyReward;
|
||||
if (reward > 0)
|
||||
_cs.AddAsync(userId, "hangman win", reward, true);
|
||||
|
||||
var winEmbed = _eb.Create().WithTitle($"Hangman Game ({game.TermType}) - Ended")
|
||||
.WithDescription(Format.Bold($"{winner} Won."))
|
||||
.AddField("It was", game.Term.GetWord())
|
||||
.WithFooter(string.Join(" ", game.PreviousGuesses))
|
||||
.WithOkColor();
|
||||
|
||||
if (Uri.IsWellFormedUriString(game.Term.ImageUrl, UriKind.Absolute))
|
||||
winEmbed.WithImageUrl(game.Term.ImageUrl);
|
||||
|
||||
return ctx.Channel.EmbedAsync(winEmbed);
|
||||
}
|
||||
|
||||
private Task Hm_OnLetterAlreadyUsed(Hangman game, string user, char guess)
|
||||
{
|
||||
return SendErrorAsync($"Hangman Game ({game.TermType})", $"{user} Letter `{guess}` has already been used. You can guess again in 3 seconds.\n" + game.ScrambledWord + "\n" + game.GetHangman(),
|
||||
footer: string.Join(" ", game.PreviousGuesses));
|
||||
}
|
||||
|
||||
private Task Hm_OnGuessSucceeded(Hangman game, string user, char guess)
|
||||
{
|
||||
return SendConfirmAsync($"Hangman Game ({game.TermType})", $"{user} guessed a letter `{guess}`!\n" + game.ScrambledWord + "\n" + game.GetHangman(),
|
||||
footer: string.Join(" ", game.PreviousGuesses));
|
||||
}
|
||||
|
||||
private Task Hm_OnGuessFailed(Hangman game, string user, char guess)
|
||||
{
|
||||
return SendErrorAsync($"Hangman Game ({game.TermType})", $"{user} Letter `{guess}` does not exist. You can guess again in 3 seconds.\n" + game.ScrambledWord + "\n" + game.GetHangman(),
|
||||
footer: string.Join(" ", game.PreviousGuesses));
|
||||
var eb = GetEmbed(_eb, hangman);
|
||||
eb.WithDescription(GetText(strs.hangman_game_started));
|
||||
await ctx.Channel.EmbedAsync(eb);
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task HangmanStop()
|
||||
{
|
||||
if (_service.HangmanGames.TryRemove(ctx.Channel.Id, out var removed))
|
||||
if (await _service.StopHangman(ctx.Channel.Id))
|
||||
{
|
||||
await removed.Stop().ConfigureAwait(false);
|
||||
await ReplyConfirmLocalizedAsync(strs.hangman_stopped).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@ using NadekoBot.Services;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Games.Common;
|
||||
using NadekoBot.Modules.Games.Common.Acrophobia;
|
||||
using NadekoBot.Modules.Games.Common.Hangman;
|
||||
using NadekoBot.Modules.Games.Common.Nunchi;
|
||||
using NadekoBot.Modules.Games.Common.Trivia;
|
||||
using Newtonsoft.Json;
|
||||
@@ -12,7 +11,6 @@ using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@@ -40,10 +38,6 @@ namespace NadekoBot.Modules.Games.Services
|
||||
|
||||
//channelId, game
|
||||
public ConcurrentDictionary<ulong, AcrophobiaGame> AcrophobiaGames { get; } = new ConcurrentDictionary<ulong, AcrophobiaGame>();
|
||||
|
||||
public ConcurrentDictionary<ulong, Hangman> HangmanGames { get; } = new ConcurrentDictionary<ulong, Hangman>();
|
||||
public TermPool TermPool { get; } = new TermPool();
|
||||
|
||||
public ConcurrentDictionary<ulong, TriviaGame> RunningTrivias { get; } = new ConcurrentDictionary<ulong, TriviaGame>();
|
||||
public Dictionary<ulong, TicTacToe> TicTacToeGames { get; } = new Dictionary<ulong, TicTacToe>();
|
||||
public ConcurrentDictionary<ulong, TypingGame> RunningContests { get; } = new ConcurrentDictionary<ulong, TypingGame>();
|
||||
|
@@ -14,6 +14,8 @@ using NadekoBot.Extensions;
|
||||
using StackExchange.Redis;
|
||||
using Discord;
|
||||
using Discord.WebSocket;
|
||||
using LinqToDB;
|
||||
using LinqToDB.EntityFrameworkCore;
|
||||
using NadekoBot.Common.Collections;
|
||||
using NadekoBot.Common.Replacements;
|
||||
using NadekoBot.Db;
|
||||
@@ -342,19 +344,18 @@ namespace NadekoBot.Modules.Searches.Services
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public int ClearAllStreams(ulong guildId)
|
||||
public async Task<int> ClearAllStreams(ulong guildId)
|
||||
{
|
||||
// todo future clear streams
|
||||
int count;
|
||||
using (var uow = _db.GetDbContext())
|
||||
{
|
||||
var gc = uow.GuildConfigsForId(guildId, set => set.Include(x => x.FollowedStreams));
|
||||
count = gc.FollowedStreams.Count;
|
||||
gc.FollowedStreams.Clear();
|
||||
uow.SaveChanges();
|
||||
}
|
||||
using var uow = _db.GetDbContext();
|
||||
var gc = uow.GuildConfigsForId(guildId, set => set.Include(x => x.FollowedStreams));
|
||||
uow.RemoveRange(gc.FollowedStreams);
|
||||
|
||||
return count;
|
||||
foreach (var s in gc.FollowedStreams)
|
||||
await PublishUnfollowStream(s);
|
||||
|
||||
uow.SaveChanges();
|
||||
|
||||
return gc.FollowedStreams.Count;
|
||||
}
|
||||
|
||||
public async Task<FollowedStream> UnfollowStreamAsync(ulong guildId, int index)
|
||||
|
@@ -69,14 +69,14 @@ namespace NadekoBot.Modules.Searches
|
||||
fs.Type));
|
||||
}
|
||||
|
||||
// [NadekoCommand, Usage, Description, Aliases]
|
||||
// [RequireContext(ContextType.Guild)]
|
||||
// [UserPerm(GuildPerm.Administrator)]
|
||||
// public async Task StreamsClear()
|
||||
// {
|
||||
// var count = _service.ClearAllStreams(ctx.Guild.Id);
|
||||
// await ReplyErrorLocalizedAsync(strs.streams_cleared(count)));
|
||||
// }
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
public async Task StreamsClear()
|
||||
{
|
||||
var count = _service.ClearAllStreams(ctx.Guild.Id);
|
||||
await ReplyConfirmLocalizedAsync(strs.streams_cleared);
|
||||
}
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
|
@@ -218,7 +218,7 @@ where ((guildid >> 22) % {_creds.TotalShards}) == {_client.ShardId};")
|
||||
|
||||
var channel = _client.GetChannel(repeater.ChannelId) as ITextChannel;
|
||||
if (channel is null)
|
||||
channel = await _client.Rest.GetChannelAsync(repeater.ChannelId) as ITextChannel;
|
||||
try { channel = await _client.Rest.GetChannelAsync(repeater.ChannelId) as ITextChannel; } catch { }
|
||||
|
||||
if (channel is null)
|
||||
{
|
||||
|
@@ -93,7 +93,7 @@ namespace NadekoBot.Modules.Utility.Services
|
||||
return DateTime.UtcNow + (Repeater.Interval * initialIntervalMultiplier);
|
||||
}
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is RunningRepeater rr && rr.Repeater.Id == this.Repeater.Id;
|
||||
}
|
||||
|
@@ -123,6 +123,7 @@ namespace NadekoBot.Modules.Xp
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
[BotPerm(GuildPerm.ManageRoles)]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[Priority(2)]
|
||||
public async Task XpRoleReward(int level)
|
||||
@@ -133,6 +134,7 @@ namespace NadekoBot.Modules.Xp
|
||||
|
||||
[NadekoCommand, Aliases]
|
||||
[UserPerm(GuildPerm.Administrator)]
|
||||
[BotPerm(GuildPerm.ManageRoles)]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
[Priority(1)]
|
||||
public async Task XpRoleReward(int level, AddRemove action, [Leftover] IRole role)
|
||||
|
@@ -19,7 +19,7 @@ namespace NadekoBot.Services
|
||||
private readonly IBotCredentials _creds;
|
||||
private readonly DateTime _started;
|
||||
|
||||
public const string BotVersion = "3.0.5";
|
||||
public const string BotVersion = "3.0.7";
|
||||
public string Author => "Kwoth#2452";
|
||||
public string Library => "Discord.Net";
|
||||
|
||||
|
@@ -532,6 +532,9 @@ streamadd:
|
||||
streamremove:
|
||||
- streamremove
|
||||
- strm
|
||||
streamsclear:
|
||||
- streamsclear
|
||||
- stclear
|
||||
streamlist:
|
||||
- streamlist
|
||||
- stl
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# DO NOT CHANGE
|
||||
version: 1
|
||||
version: 2
|
||||
# Currency settings
|
||||
currency:
|
||||
# What is the emoji/character which represents the currency
|
||||
@@ -21,12 +21,12 @@ betRoll:
|
||||
# This setting will describe which multiplier is used for when the roll is higher than the given number.
|
||||
# Doesn't have to be ordered.
|
||||
pairs:
|
||||
- whenAbove: 99
|
||||
multiplyBy: 10
|
||||
- whenAbove: 90
|
||||
multiplyBy: 4
|
||||
- whenAbove: 66
|
||||
multiplyBy: 2
|
||||
- whenAbove: 99
|
||||
multiplyBy: 10
|
||||
- whenAbove: 90
|
||||
multiplyBy: 4
|
||||
- whenAbove: 66
|
||||
multiplyBy: 2
|
||||
# Automatic currency generation settings.
|
||||
generation:
|
||||
# when currency is generated, should it also have a random password
|
||||
@@ -68,14 +68,14 @@ decay:
|
||||
wheelOfFortune:
|
||||
# Self-Explanatory. Has to have 8 values, otherwise the command won't work.
|
||||
multipliers:
|
||||
- 1.7
|
||||
- 1.5
|
||||
- 0.2
|
||||
- 0.1
|
||||
- 0.3
|
||||
- 0.5
|
||||
- 1.2
|
||||
- 2.4
|
||||
- 1.7
|
||||
- 1.5
|
||||
- 0.2
|
||||
- 0.1
|
||||
- 0.3
|
||||
- 0.5
|
||||
- 1.2
|
||||
- 2.4
|
||||
# Settings related to waifus
|
||||
waifu:
|
||||
# Minimum price a waifu can have
|
||||
@@ -107,116 +107,133 @@ waifu:
|
||||
# Default 0.95 (meaning 95%)
|
||||
# Example: If a waifu is worth 1000, and she receives a gift worth 100, her new value will be 1095)
|
||||
giftEffect: 0.95
|
||||
# What percentage of the value of the gift will a waifu lose when she's gifted a gift marked as 'negative'.
|
||||
# Default 0.5 (meaning 50%)
|
||||
# Example: If a waifu is worth 1000, and she receives a negative gift worth 100, her new value will be 950)
|
||||
negativeGiftEffect: 0.50
|
||||
# List of items available for gifting.
|
||||
# If negative is true, gift will instead reduce waifu value.
|
||||
items:
|
||||
- itemEmoji: "🥔"
|
||||
price: 5
|
||||
name: Potato
|
||||
- itemEmoji: "🍪"
|
||||
price: 10
|
||||
name: Cookie
|
||||
- itemEmoji: "🥖"
|
||||
price: 20
|
||||
name: Bread
|
||||
- itemEmoji: "🍭"
|
||||
price: 30
|
||||
name: Lollipop
|
||||
- itemEmoji: "🌹"
|
||||
price: 50
|
||||
name: Rose
|
||||
- itemEmoji: "🍺"
|
||||
price: 70
|
||||
name: Beer
|
||||
- itemEmoji: "🌮"
|
||||
price: 85
|
||||
name: Taco
|
||||
- itemEmoji: "💌"
|
||||
price: 100
|
||||
name: LoveLetter
|
||||
- itemEmoji: "🥛"
|
||||
price: 125
|
||||
name: Milk
|
||||
- itemEmoji: "🍕"
|
||||
price: 150
|
||||
name: Pizza
|
||||
- itemEmoji: "🍫"
|
||||
price: 200
|
||||
name: Chocolate
|
||||
- itemEmoji: "🍦"
|
||||
price: 250
|
||||
name: Icecream
|
||||
- itemEmoji: "🍣"
|
||||
price: 300
|
||||
name: Sushi
|
||||
- itemEmoji: "🍚"
|
||||
price: 400
|
||||
name: Rice
|
||||
- itemEmoji: "🍉"
|
||||
price: 500
|
||||
name: Watermelon
|
||||
- itemEmoji: "🍱"
|
||||
price: 600
|
||||
name: Bento
|
||||
- itemEmoji: "🎟"
|
||||
price: 800
|
||||
name: MovieTicket
|
||||
- itemEmoji: "🍰"
|
||||
price: 1000
|
||||
name: Cake
|
||||
- itemEmoji: "📔"
|
||||
price: 1500
|
||||
name: Book
|
||||
- itemEmoji: "🐱"
|
||||
price: 2000
|
||||
name: Cat
|
||||
- itemEmoji: "🐶"
|
||||
price: 2001
|
||||
name: Dog
|
||||
- itemEmoji: "🐼"
|
||||
price: 2500
|
||||
name: Panda
|
||||
- itemEmoji: "💄"
|
||||
price: 3000
|
||||
name: Lipstick
|
||||
- itemEmoji: "👛"
|
||||
price: 3500
|
||||
name: Purse
|
||||
- itemEmoji: "📱"
|
||||
price: 4000
|
||||
name: iPhone
|
||||
- itemEmoji: "👗"
|
||||
price: 4500
|
||||
name: Dress
|
||||
- itemEmoji: "💻"
|
||||
price: 5000
|
||||
name: Laptop
|
||||
- itemEmoji: "🎻"
|
||||
price: 7500
|
||||
name: Violin
|
||||
- itemEmoji: "🎹"
|
||||
price: 8000
|
||||
name: Piano
|
||||
- itemEmoji: "🚗"
|
||||
price: 9000
|
||||
name: Car
|
||||
- itemEmoji: "💍"
|
||||
price: 10000
|
||||
name: Ring
|
||||
- itemEmoji: "🛳"
|
||||
price: 12000
|
||||
name: Ship
|
||||
- itemEmoji: "🏠"
|
||||
price: 15000
|
||||
name: House
|
||||
- itemEmoji: "🚁"
|
||||
price: 20000
|
||||
name: Helicopter
|
||||
- itemEmoji: "🚀"
|
||||
price: 30000
|
||||
name: Spaceship
|
||||
- itemEmoji: "🌕"
|
||||
price: 50000
|
||||
name: Moon
|
||||
- itemEmoji: "🥔"
|
||||
price: 5
|
||||
name: Potato
|
||||
- itemEmoji: "🍪"
|
||||
price: 10
|
||||
name: Cookie
|
||||
- itemEmoji: "🥖"
|
||||
price: 20
|
||||
name: Bread
|
||||
- itemEmoji: "🍭"
|
||||
price: 30
|
||||
name: Lollipop
|
||||
- itemEmoji: "🌹"
|
||||
price: 50
|
||||
name: Rose
|
||||
- itemEmoji: "🍺"
|
||||
price: 70
|
||||
name: Beer
|
||||
- itemEmoji: "🌮"
|
||||
price: 85
|
||||
name: Taco
|
||||
- itemEmoji: "💌"
|
||||
price: 100
|
||||
name: LoveLetter
|
||||
- itemEmoji: "🥛"
|
||||
price: 125
|
||||
name: Milk
|
||||
- itemEmoji: "🍕"
|
||||
price: 150
|
||||
name: Pizza
|
||||
- itemEmoji: "🍫"
|
||||
price: 200
|
||||
name: Chocolate
|
||||
- itemEmoji: "🍦"
|
||||
price: 250
|
||||
name: Icecream
|
||||
- itemEmoji: "🍣"
|
||||
price: 300
|
||||
name: Sushi
|
||||
- itemEmoji: "🍚"
|
||||
price: 400
|
||||
name: Rice
|
||||
- itemEmoji: "🍉"
|
||||
price: 500
|
||||
name: Watermelon
|
||||
- itemEmoji: "🍱"
|
||||
price: 600
|
||||
name: Bento
|
||||
- itemEmoji: "🎟"
|
||||
price: 800
|
||||
name: MovieTicket
|
||||
- itemEmoji: "🍰"
|
||||
price: 1000
|
||||
name: Cake
|
||||
- itemEmoji: "📔"
|
||||
price: 1500
|
||||
name: Book
|
||||
- itemEmoji: "🐱"
|
||||
price: 2000
|
||||
name: Cat
|
||||
- itemEmoji: "🐶"
|
||||
price: 2001
|
||||
name: Dog
|
||||
- itemEmoji: "🐼"
|
||||
price: 2500
|
||||
name: Panda
|
||||
- itemEmoji: "💄"
|
||||
price: 3000
|
||||
name: Lipstick
|
||||
- itemEmoji: "👛"
|
||||
price: 3500
|
||||
name: Purse
|
||||
- itemEmoji: "📱"
|
||||
price: 4000
|
||||
name: iPhone
|
||||
- itemEmoji: "👗"
|
||||
price: 4500
|
||||
name: Dress
|
||||
- itemEmoji: "💻"
|
||||
price: 5000
|
||||
name: Laptop
|
||||
- itemEmoji: "🎻"
|
||||
price: 7500
|
||||
name: Violin
|
||||
- itemEmoji: "🎹"
|
||||
price: 8000
|
||||
name: Piano
|
||||
- itemEmoji: "🚗"
|
||||
price: 9000
|
||||
name: Car
|
||||
- itemEmoji: "💍"
|
||||
price: 10000
|
||||
name: Ring
|
||||
- itemEmoji: "🛳"
|
||||
price: 12000
|
||||
name: Ship
|
||||
- itemEmoji: "🏠"
|
||||
price: 15000
|
||||
name: House
|
||||
- itemEmoji: "🚁"
|
||||
price: 20000
|
||||
name: Helicopter
|
||||
- itemEmoji: "🚀"
|
||||
price: 30000
|
||||
name: Spaceship
|
||||
- itemEmoji: "🌕"
|
||||
price: 50000
|
||||
name: Moon
|
||||
- itemEmoji: "🥀"
|
||||
price: 100
|
||||
name: WiltedRose
|
||||
negative: true
|
||||
- itemEmoji: ✂️
|
||||
price: 1000
|
||||
name: Haircut
|
||||
negative: true
|
||||
- itemEmoji: "🧻"
|
||||
price: 10000
|
||||
name: ToiletPaper
|
||||
negative: true
|
||||
# Amount of currency selfhosters will get PER pledged dollar CENT.
|
||||
# 1 = 100 currency per $. Used almost exclusively on public nadeko.
|
||||
patreonCurrencyPerCent: 1
|
||||
|
File diff suppressed because it is too large
Load Diff
276
src/NadekoBot/data/hangman/animals.yml
Normal file
276
src/NadekoBot/data/hangman/animals.yml
Normal file
@@ -0,0 +1,276 @@
|
||||
- word: Alligator
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Alligator.jpg
|
||||
- word: Alpaca
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Alpaca.jpg
|
||||
- word: Anaconda
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Anaconda.jpg
|
||||
- word: Ant
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Ant.jpg
|
||||
- word: Antelope
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Antelope.jpg
|
||||
- word: Ape
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Ape.jpg
|
||||
- word: Armadillo
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Armadillo.jpg
|
||||
- word: Baboon
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Baboon.jpg
|
||||
- word: Badger
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Badger.jpg
|
||||
- word: Bald Eagle
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bald Eagle.jpg
|
||||
- word: Barracuda
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Barracuda.jpg
|
||||
- word: Bat
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bat.jpg
|
||||
- word: Bear
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bear.jpg
|
||||
- word: Beaver
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Beaver.jpg
|
||||
- word: Bedbug
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bedbug.jpg
|
||||
- word: Bee
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bee.jpg
|
||||
- word: Beetle
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Beetle.jpg
|
||||
- word: Bird
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bird.jpg
|
||||
- word: Bison
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bison.jpg
|
||||
- word: Puma
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Puma.jpg
|
||||
- word: Black Widow
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Black Widow.jpg
|
||||
- word: Blue Jay
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Blue Jay.jpg
|
||||
- word: Blue Whale
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Blue Whale.jpg
|
||||
- word: Bobcat
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Bobcat.jpg
|
||||
- word: Buffalo
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Buffalo.jpg
|
||||
- word: Butterfly
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Butterfly.jpg
|
||||
- word: Buzzard
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Buzzard.jpg
|
||||
- word: Camel
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Camel.jpg
|
||||
- word: Carp
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Carp.jpg
|
||||
- word: Cat
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cat.jpg
|
||||
- word: Caterpillar
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Caterpillar.jpg
|
||||
- word: Catfish
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Catfish.jpg
|
||||
- word: Cheetah
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cheetah.jpg
|
||||
- word: Chicken
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Chicken.jpg
|
||||
- word: Chimpanzee
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Chimpanzee.jpg
|
||||
- word: Chipmunk
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Chipmunk.jpg
|
||||
- word: Cobra
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cobra.jpg
|
||||
- word: Cod
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cod.jpg
|
||||
- word: Condor
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Condor.jpg
|
||||
- word: Cougar
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cougar.jpg
|
||||
- word: Cow
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cow.jpg
|
||||
- word: Coyote
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Coyote.jpg
|
||||
- word: Crab
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Crab.jpg
|
||||
- word: Crane
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Crane.jpg
|
||||
- word: Cricket
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cricket.jpg
|
||||
- word: Crocodile
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Crocodile.jpg
|
||||
- word: Crow
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Crow.jpg
|
||||
- word: Cuckoo
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Cuckoo.jpg
|
||||
- word: Deer
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Deer.jpg
|
||||
- word: Dinosaur
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Dinosaur.jpg
|
||||
- word: Dog
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Dog.jpg
|
||||
- word: Dolphin
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Dolphin.jpg
|
||||
- word: Donkey
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Donkey.jpg
|
||||
- word: Dove
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Dove.jpg
|
||||
- word: Dragonfly
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Dragonfly.jpg
|
||||
- word: Duck
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Duck.jpg
|
||||
- word: Eel
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Eel.jpg
|
||||
- word: Elephant
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Elephant.jpg
|
||||
- word: Emu
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Emu.jpg
|
||||
- word: Falcon
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Falcon.jpg
|
||||
- word: Ferret
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Ferret.jpg
|
||||
- word: Finch
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Finch.jpg
|
||||
- word: Fish
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Fish.jpg
|
||||
- word: Flamingo
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Flamingo.jpg
|
||||
- word: Flea
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Flea.jpg
|
||||
- word: Fly
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Fly.jpg
|
||||
- word: Fox
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Fox.jpg
|
||||
- word: Frog
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Frog.jpg
|
||||
- word: Goat
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Goat.jpg
|
||||
- word: Golden Eagle
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Golden Eagle.jpg
|
||||
- word: Goose
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Goose.jpg
|
||||
- word: Gopher
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Gopher.jpg
|
||||
- word: Gorilla
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Gorilla.jpg
|
||||
- word: Grasshopper
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Grasshopper.jpg
|
||||
- word: Hamster
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Hamster.jpg
|
||||
- word: Hare
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Hare.jpg
|
||||
- word: Hawk
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Hawk.jpg
|
||||
- word: Hippopotamus
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Hippopotamus.jpg
|
||||
- word: Horse
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Horse.jpg
|
||||
- word: Hummingbird
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Hummingbird.jpg
|
||||
- word: Husky
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Husky.jpg
|
||||
- word: Iguana
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Iguana.jpg
|
||||
- word: Impala
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Impala.jpg
|
||||
- word: Kangaroo
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Kangaroo.jpg
|
||||
- word: Ladybug
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Ladybug.jpg
|
||||
- word: Leopard
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Leopard.jpg
|
||||
- word: Lion
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Lion.jpg
|
||||
- word: Lizard
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Lizard.jpg
|
||||
- word: Llama
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Llama.jpg
|
||||
- word: Lobster
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Lobster.jpg
|
||||
- word: Mongoose
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Mongoose.jpg
|
||||
- word: Monitor lizard
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Monitor lizard.jpg
|
||||
- word: Monkey
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Monkey.jpg
|
||||
- word: Moose
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Moose.jpg
|
||||
- word: Mosquito
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Mosquito.jpg
|
||||
- word: Moth
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Moth.jpg
|
||||
- word: Mountain goat
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Mountain goat.jpg
|
||||
- word: Mouse
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Mouse.jpg
|
||||
- word: Mule
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Mule.jpg
|
||||
- word: Octopus
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Octopus.jpg
|
||||
- word: Orca
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Orca.jpg
|
||||
- word: Ostrich
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Ostrich.jpg
|
||||
- word: Otter
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Otter.jpg
|
||||
- word: Owl
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Owl.jpg
|
||||
- word: Ox
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Ox.jpg
|
||||
- word: Oyster
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Oyster.jpg
|
||||
- word: Panda
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Panda.jpg
|
||||
- word: Parrot
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Parrot.jpg
|
||||
- word: Peacock
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Peacock.jpg
|
||||
- word: Pelican
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Pelican.jpg
|
||||
- word: Penguin
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Penguin.jpg
|
||||
- word: Perch
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Perch.jpg
|
||||
- word: Pheasant
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Pheasant.jpg
|
||||
- word: Pig
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Pig.jpg
|
||||
- word: Pigeon
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Pigeon.jpg
|
||||
- word: Polar bear
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Polar bear.jpg
|
||||
- word: Porcupine
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Porcupine.jpg
|
||||
- word: Quail
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Quail.jpg
|
||||
- word: Rabbit
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Rabbit.jpg
|
||||
- word: Raccoon
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Raccoon.jpg
|
||||
- word: Rat
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Rat.jpg
|
||||
- word: Rattlesnake
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Rattlesnake.jpg
|
||||
- word: Raven
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Raven.jpg
|
||||
- word: Reindeer
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Reindeer.jpg
|
||||
- word: Rooster
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Rooster.jpg
|
||||
- word: Sea lion
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Sea lion.jpg
|
||||
- word: Seal
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Seal.jpg
|
||||
- word: Sheep
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Sheep.jpg
|
||||
- word: Shrew
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Shrew.jpg
|
||||
- word: Skunk
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Skunk.jpg
|
||||
- word: Snail
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Snail.jpg
|
||||
- word: Snake
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Snake.jpg
|
||||
- word: Spider
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Spider.jpg
|
||||
- word: Tiger
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Tiger.jpg
|
||||
- word: Walrus
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Walrus.jpg
|
||||
- word: Whale
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Whale.jpg
|
||||
- word: Wolf
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Wolf.jpg
|
||||
- word: Zebra
|
||||
imageUrl: https://cdn.nadeko.bot/animals/Zebra
|
766
src/NadekoBot/data/hangman/anime.yml
Normal file
766
src/NadekoBot/data/hangman/anime.yml
Normal file
@@ -0,0 +1,766 @@
|
||||
- word: 'Fullmetal Alchemist: Brotherhood'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fullmetal_Alchemist_Brotherhood.jpg
|
||||
- word: Steins;Gate
|
||||
imageUrl: https://cdn.nadeko.bot/animu/SteinsGate.jpg
|
||||
- word: Hunter x Hunter (2011)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hunter_x_Hunter_2011.jpg
|
||||
- word: Ginga Eiyuu Densetsu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ginga_Eiyuu_Densetsu.jpg
|
||||
- word: 'Fruits Basket: The Final'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fruits_Basket_The_Final.jpg
|
||||
- word: Koe no Katachi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koe_no_Katachi.jpg
|
||||
- word: 'Clannad: After Story'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Clannad_After_Story.jpg
|
||||
- word: Gintama
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gintama.jpg
|
||||
- word: Kimi no Na wa.
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kimi_no_Na_wa..jpg
|
||||
- word: 'Code Geass: Hangyaku no Lelouch R2'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Code_Geass_Hangyaku_no_Lelouch_R2.jpg
|
||||
- word: 'Haikyuu!!: Karasuno Koukou vs. Shiratorizawa Gakuen Koukou'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Haikyuu_Karasuno_Koukou_vs._Shiratorizawa_Gakuen_Koukou.jpg
|
||||
- word: Mob Psycho 100 II
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mob_Psycho_100_II.jpg
|
||||
- word: 'Kizumonogatari III: Reiketsu-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kizumonogatari_III_Reiketsu-hen.jpg
|
||||
- word: Sen to Chihiro no Kamikakushi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Sen_to_Chihiro_no_Kamikakushi.jpg
|
||||
- word: Violet Evergarden Movie
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Violet_Evergarden_Movie.jpg
|
||||
- word: 'Monogatari Series: Second Season'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Monogatari_Series_Second_Season.jpg
|
||||
- word: Monster
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Monster.jpg
|
||||
- word: 'Shouwa Genroku Rakugo Shinjuu: Sukeroku Futatabi-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shouwa_Genroku_Rakugo_Shinjuu_Sukeroku_Futatabi-hen.jpg
|
||||
- word: Cowboy Bebop
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Cowboy_Bebop.jpg
|
||||
- word: Jujutsu Kaisen (TV)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Jujutsu_Kaisen_TV.jpg
|
||||
- word: 'Kimetsu no Yaiba Movie: Mugen Ressha-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kimetsu_no_Yaiba_Movie_Mugen_Ressha-hen.jpg
|
||||
- word: Mushishi Zoku Shou 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushishi_Zoku_Shou_2nd_Season.jpg
|
||||
- word: Hajime no Ippo
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hajime_no_Ippo.jpg
|
||||
- word: Made in Abyss
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Made_in_Abyss.jpg
|
||||
- word: 'Made in Abyss Movie 3: Fukaki Tamashii no Reimei'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Made_in_Abyss_Movie_3_Fukaki_Tamashii_no_Reimei.jpg
|
||||
- word: Mushishi Zoku Shou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushishi_Zoku_Shou.jpg
|
||||
- word: 'Rurouni Kenshin: Meiji Kenkaku Romantan - Tsuioku-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Rurouni_Kenshin_Meiji_Kenkaku_Romantan_-_Tsuioku-hen.jpg
|
||||
- word: Shigatsu wa Kimi no Uso
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shigatsu_wa_Kimi_no_Uso.jpg
|
||||
- word: Vinland Saga
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Vinland_Saga.jpg
|
||||
- word: 'Code Geass: Hangyaku no Lelouch'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Code_Geass_Hangyaku_no_Lelouch.jpg
|
||||
- word: Great Teacher Onizuka
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Great_Teacher_Onizuka.jpg
|
||||
- word: Mononoke Hime
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mononoke_Hime.jpg
|
||||
- word: Mushishi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushishi.jpg
|
||||
- word: Haikyuu!! Second Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Haikyuu_Second_Season.jpg
|
||||
- word: 'Kaguya-sama wa Kokurasetai?: Tensai-tachi no Renai Zunousen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaguya-sama_wa_Kokurasetai_Tensai-tachi_no_Renai_Zunousen.jpg
|
||||
- word: 'Hajime no Ippo: New Challenger'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hajime_no_Ippo_New_Challenger.jpg
|
||||
- word: Howl no Ugoku Shiro
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Howl_no_Ugoku_Shiro.jpg
|
||||
- word: Natsume Yuujinchou Shi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Shi.jpg
|
||||
- word: Seishun Buta Yarou wa Yumemiru Shoujo no Yume wo Minai
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Seishun_Buta_Yarou_wa_Yumemiru_Shoujo_no_Yume_wo_Minai.jpg
|
||||
- word: Tengen Toppa Gurren Lagann
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tengen_Toppa_Gurren_Lagann.jpg
|
||||
- word: Violet Evergarden
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Violet_Evergarden.jpg
|
||||
- word: Natsume Yuujinchou Roku
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Roku.jpg
|
||||
- word: Suzumiya Haruhi no Shoushitsu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Suzumiya_Haruhi_no_Shoushitsu.jpg
|
||||
- word: Death Note
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Death_Note.jpg
|
||||
- word: Fumetsu no Anata e
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fumetsu_no_Anata_e.jpg
|
||||
- word: 'Mushishi Zoku Shou: Suzu no Shizuku'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushishi_Zoku_Shou_Suzu_no_Shizuku.jpg
|
||||
- word: Ookami Kodomo no Ame to Yuki
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ookami_Kodomo_no_Ame_to_Yuki.jpg
|
||||
- word: Ping Pong the Animation
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ping_Pong_the_Animation.jpg
|
||||
- word: Yakusoku no Neverland
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yakusoku_no_Neverland.jpg
|
||||
- word: 'Kizumonogatari II: Nekketsu-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kizumonogatari_II_Nekketsu-hen.jpg
|
||||
- word: Yojouhan Shinwa Taikei
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yojouhan_Shinwa_Taikei.jpg
|
||||
- word: Natsume Yuujinchou San
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_San.jpg
|
||||
- word: Shouwa Genroku Rakugo Shinjuu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shouwa_Genroku_Rakugo_Shinjuu.jpg
|
||||
- word: 'Hajime no Ippo: Rising'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hajime_no_Ippo_Rising.jpg
|
||||
- word: Kimetsu no Yaiba
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kimetsu_no_Yaiba.jpg
|
||||
- word: Kimi no Suizou wo Tabetai
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kimi_no_Suizou_wo_Tabetai.jpg
|
||||
- word: Natsume Yuujinchou Go
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Go.jpg
|
||||
- word: Re:Zero kara Hajimeru Isekai Seikatsu 2nd Season Part 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/ReZero_kara_Hajimeru_Isekai_Seikatsu_2nd_Season_Part_2.jpg
|
||||
- word: 'Mushishi: Hihamukage'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushishi_Hihamukage.jpg
|
||||
- word: Bakuman. 3rd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bakuman._3rd_Season.jpg
|
||||
- word: 'Kara no Kyoukai 5: Mujun Rasen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kara_no_Kyoukai_5_Mujun_Rasen.jpg
|
||||
- word: Sora yori mo Tooi Basho
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Sora_yori_mo_Tooi_Basho.jpg
|
||||
- word: Zoku Natsume Yuujinchou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Zoku_Natsume_Yuujinchou.jpg
|
||||
- word: One Piece
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Piece.jpg
|
||||
- word: Yuru Camp△ Season 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yuru_Camp_Season_2.jpg
|
||||
- word: Fruits Basket 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fruits_Basket_2nd_Season.jpg
|
||||
- word: 'Haikyuu!!: To the Top 2nd Season'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Haikyuu_To_the_Top_2nd_Season.jpg
|
||||
- word: 'Koukaku Kidoutai: Stand Alone Complex 2nd GIG'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koukaku_Kidoutai_Stand_Alone_Complex_2nd_GIG.jpg
|
||||
- word: One Punch Man
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Punch_Man.jpg
|
||||
- word: 'Neon Genesis Evangelion: The End of Evangelion'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Neon_Genesis_Evangelion_The_End_of_Evangelion.jpg
|
||||
- word: Ansatsu Kyoushitsu 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ansatsu_Kyoushitsu_2nd_Season.jpg
|
||||
- word: Slam Dunk
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Slam_Dunk.jpg
|
||||
- word: "Vivy: Fluorite Eye's Song"
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Vivy_Fluorite_Eyes_Song.jpg
|
||||
- word: 'Rainbow: Nisha Rokubou no Shichinin'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Rainbow_Nisha_Rokubou_no_Shichinin.jpg
|
||||
- word: Shingeki no Kyojin
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shingeki_no_Kyojin.jpg
|
||||
- word: Uchuu Kyoudai
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Uchuu_Kyoudai.jpg
|
||||
- word: Aria the Origination
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Aria_the_Origination.jpg
|
||||
- word: Holo no Graffiti
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Holo_no_Graffiti.jpg
|
||||
- word: Hotaru no Haka
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hotaru_no_Haka.jpg
|
||||
- word: Banana Fish
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Banana_Fish.jpg
|
||||
- word: Chihayafuru 3
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Chihayafuru_3.jpg
|
||||
- word: Kenpuu Denki Berserk
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kenpuu_Denki_Berserk.jpg
|
||||
- word: Perfect Blue
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Perfect_Blue.jpg
|
||||
- word: Samurai Champloo
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Samurai_Champloo.jpg
|
||||
- word: Haikyuu!!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Haikyuu.jpg
|
||||
- word: Mo Dao Zu Shi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mo_Dao_Zu_Shi.jpg
|
||||
- word: Mob Psycho 100
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mob_Psycho_100.jpg
|
||||
- word: Zoku Owarimonogatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Zoku_Owarimonogatari.jpg
|
||||
- word: Nana
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nana.jpg
|
||||
- word: Nichijou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nichijou.jpg
|
||||
- word: Saenai Heroine no Sodatekata Fine
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Saenai_Heroine_no_Sodatekata_Fine.jpg
|
||||
- word: 'Mushishi Zoku Shou: Odoro no Michi'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushishi_Zoku_Shou_Odoro_no_Michi.jpg
|
||||
- word: Owarimonogatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Owarimonogatari.jpg
|
||||
- word: Saiki Kusuo no Ψ-nan 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Saiki_Kusuo_no_-nan_2.jpg
|
||||
- word: Yuu☆Yuu☆Hakusho
|
||||
imageUrl: https://cdn.nadeko.bot/animu/YuuYuuHakusho.jpg
|
||||
- word: Golden Kamuy 3rd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Golden_Kamuy_3rd_Season.jpg
|
||||
- word: 'Koukaku Kidoutai: Stand Alone Complex'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koukaku_Kidoutai_Stand_Alone_Complex.jpg
|
||||
- word: Mo Dao Zu Shi 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mo_Dao_Zu_Shi_2nd_Season.jpg
|
||||
- word: Re:Zero kara Hajimeru Isekai Seikatsu 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/ReZero_kara_Hajimeru_Isekai_Seikatsu_2nd_Season.jpg
|
||||
- word: Sayonara no Asa ni Yakusoku no Hana wo Kazarou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Sayonara_no_Asa_ni_Yakusoku_no_Hana_wo_Kazarou.jpg
|
||||
- word: Mononoke
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mononoke.jpg
|
||||
- word: Saiki Kusuo no Ψ-nan
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Saiki_Kusuo_no_-nan.jpg
|
||||
- word: Gotcha!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gotcha.jpg
|
||||
- word: 'Kara no Kyoukai 7: Satsujin Kousatsu (Go)'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kara_no_Kyoukai_7_Satsujin_Kousatsu_Go.jpg
|
||||
- word: Kaze ga Tsuyoku Fuiteiru
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaze_ga_Tsuyoku_Fuiteiru.jpg
|
||||
- word: 3-gatsu no Lion
|
||||
imageUrl: https://cdn.nadeko.bot/animu/3-gatsu_no_Lion.jpg
|
||||
- word: Cross Game
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Cross_Game.jpg
|
||||
- word: Josee to Tora to Sakana-tachi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Josee_to_Tora_to_Sakana-tachi.jpg
|
||||
- word: Kono Oto Tomare! 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kono_Oto_Tomare_2nd_Season.jpg
|
||||
- word: 'Natsume Yuujinchou Movie: Utsusemi ni Musubu'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Movie_Utsusemi_ni_Musubu.jpg
|
||||
- word: Yahari Ore no Seishun Love Comedy wa Machigatteiru. Kan
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yahari_Ore_no_Seishun_Love_Comedy_wa_Machigatteiru._Kan.jpg
|
||||
- word: Non Non Biyori Nonstop
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Non_Non_Biyori_Nonstop.jpg
|
||||
- word: Usagi Drop
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Usagi_Drop.jpg
|
||||
- word: Baccano!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Baccano.jpg
|
||||
- word: Chihayafuru 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Chihayafuru_2.jpg
|
||||
- word: 'Douluo Dalu: Xiaowu Juebie'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Xiaowu_Juebie.jpg
|
||||
- word: Grand Blue
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Grand_Blue.jpg
|
||||
- word: Houseki no Kuni (TV)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Houseki_no_Kuni_TV.jpg
|
||||
- word: Hunter x Hunter
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hunter_x_Hunter.jpg
|
||||
- word: 'Kaguya-sama wa Kokurasetai: Tensai-tachi no Renai Zunousen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaguya-sama_wa_Kokurasetai_Tensai-tachi_no_Renai_Zunousen.jpg
|
||||
- word: Barakamon
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Barakamon.jpg
|
||||
- word: 'Kizumonogatari I: Tekketsu-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kizumonogatari_I_Tekketsu-hen.jpg
|
||||
- word: 'Mushoku Tensei: Isekai Ittara Honki Dasu'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mushoku_Tensei_Isekai_Ittara_Honki_Dasu.jpg
|
||||
- word: Natsume Yuujinchou Roku Specials
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Roku_Specials.jpg
|
||||
- word: 'Violet Evergarden Gaiden: Eien to Jidou Shuki Ningyou'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Violet_Evergarden_Gaiden_Eien_to_Jidou_Shuki_Ningyou.jpg
|
||||
- word: Shiguang Daili Ren
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shiguang_Daili_Ren.jpg
|
||||
- word: Tensei shitara Slime Datta Ken 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tensei_shitara_Slime_Datta_Ken_2nd_Season.jpg
|
||||
- word: Ano Hi Mita Hana no Namae wo Bokutachi wa Mada Shiranai.
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ano_Hi_Mita_Hana_no_Namae_wo_Bokutachi_wa_Mada_Shiranai..jpg
|
||||
- word: 'Cowboy Bebop: Tengoku no Tobira'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Cowboy_Bebop_Tengoku_no_Tobira.jpg
|
||||
- word: Hellsing Ultimate
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hellsing_Ultimate.jpg
|
||||
- word: Kaze no Tani no Nausica
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaze_no_Tani_no_Nausica.jpg
|
||||
- word: Luo Xiao Hei Zhan Ji (Movie)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Luo_Xiao_Hei_Zhan_Ji_Movie.jpg
|
||||
- word: Bakuman. 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bakuman._2nd_Season.jpg
|
||||
- word: 'Kiseijuu: Sei no Kakuritsu'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kiseijuu_Sei_no_Kakuritsu.jpg
|
||||
- word: 'Kamisama Hajimemashita: Kako-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kamisama_Hajimemashita_Kako-hen.jpg
|
||||
- word: Kingdom 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kingdom_2nd_Season.jpg
|
||||
- word: Kingdom 3rd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kingdom_3rd_Season.jpg
|
||||
- word: Mahou Shoujo Madoka Magica
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mahou_Shoujo_MadokaMagica.jpg
|
||||
- word: Psycho-Pass
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Psycho-Pass.jpg
|
||||
- word: Tenki no Ko
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tenki_no_Ko.jpg
|
||||
- word: Heaven Official's Blessing
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tian_Guan_Ci_Fu.jpg
|
||||
- word: Uchuu Senkan Yamato 2199
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Uchuu_Senkan_Yamato_2199.jpg
|
||||
- word: 'Haikyuu!!: To the Top'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Haikyuu_To_the_Top.jpg
|
||||
- word: Bakemonogatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bakemonogatari.jpg
|
||||
- word: Given
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Given.jpg
|
||||
- word: Hotarubi no Mori e
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hotarubi_no_Mori_e.jpg
|
||||
- word: Katanagatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Katanagatari.jpg
|
||||
- word: 'Natsume Yuujinchou: Itsuka Yuki no Hi ni'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Itsuka_Yuki_no_Hi_ni.jpg
|
||||
- word: One Outs
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Outs.jpg
|
||||
- word: Ookami to Koushinryou II
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ookami_to_Koushinryou_II.jpg
|
||||
- word: Romeo no Aoi Sora
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Romeo_no_Aoi_Sora.jpg
|
||||
- word: Sakamichi no Apollon
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Sakamichi_no_Apollon.jpg
|
||||
- word: Seishun Buta Yarou wa Bunny Girl Senpai no Yume wo Minai
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Seishun_Buta_Yarou_wa_Bunny_Girl_Senpai_no_Yume_wo_Minai.jpg
|
||||
- word: Boku dake ga Inai Machi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Boku_dake_ga_Inai_Machi.jpg
|
||||
- word: 'Evangelion: 2.0 You Can (Not) Advance'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Evangelion_2.0_You_Can_Not_Advance.jpg
|
||||
- word: Kemono no Souja Erin
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kemono_no_Souja_Erin.jpg
|
||||
- word: 'Made in Abyss Movie 2: Hourou Suru Tasogare'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Made_in_Abyss_Movie_2_Hourou_Suru_Tasogare.jpg
|
||||
- word: 'Major: World Series'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Major_World_Series.jpg
|
||||
- word: Doukyuusei (Movie)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Doukyuusei_Movie.jpg
|
||||
- word: K-On! Movie
|
||||
imageUrl: https://cdn.nadeko.bot/animu/K-On_Movie.jpg
|
||||
- word: Natsume Yuujinchou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou.jpg
|
||||
- word: Natsume Yuujinchou Go Specials
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Natsume_Yuujinchou_Go_Specials.jpg
|
||||
- word: NHK ni Youkoso!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/NHK_ni_Youkoso.jpg
|
||||
- word: Shelter
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shelter.jpg
|
||||
- word: Shinsekai yori
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shinsekai_yori.jpg
|
||||
- word: Shirobako
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shirobako.jpg
|
||||
- word: Versailles no Bara
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Versailles_no_Bara.jpg
|
||||
- word: Neon Genesis Evangelion
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Neon_Genesis_Evangelion.jpg
|
||||
- word: Dr. Stone
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dr._Stone.jpg
|
||||
- word: Fate/Zero
|
||||
imageUrl: https://cdn.nadeko.bot/animu/FateZero.jpg
|
||||
- word: Great Pretender
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Great_Pretender.jpg
|
||||
- word: 'Hunter x Hunter: Original Video Animation'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hunter_x_Hunter_Original_Video_Animation.jpg
|
||||
- word: 'Kino no Tabi: The Beautiful World'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kino_no_Tabi_The_Beautiful_World.jpg
|
||||
- word: Kuroko no Basket 3rd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroko_no_Basket_3rd_Season.jpg
|
||||
- word: Bakemono no Ko
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bakemono_no_Ko.jpg
|
||||
- word: Beck
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Beck.jpg
|
||||
- word: 'Diamond no Ace: Second Season'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Diamond_no_Ace_Second_Season.jpg
|
||||
- word: Nodame Cantabile
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nodame_Cantabile.jpg
|
||||
- word: 'Rurouni Kenshin: Meiji Kenkaku Romantan'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Rurouni_Kenshin_Meiji_Kenkaku_Romantan.jpg
|
||||
- word: 'Tsubasa: Tokyo Revelations'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tsubasa_Tokyo_Revelations.jpg
|
||||
- word: 'Violet Evergarden: Kitto "Ai" wo Shiru Hi ga Kuru no Darou'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Violet_Evergarden_Kitto_Ai_wo_Shiru_Hi_ga_Kuru_no_Darou.jpg
|
||||
- word: Planetes
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Planetes.jpg
|
||||
- word: 'Stranger: Mukou Hadan'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Stranger_Mukou_Hadan.jpg
|
||||
- word: Yuukoku no Moriarty 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yuukoku_no_Moriarty_2nd_Season.jpg
|
||||
- word: Gin no Saji 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gin_no_Saji_2nd_Season.jpg
|
||||
- word: Hibike! Euphonium 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hibike_Euphonium_2.jpg
|
||||
- word: Initial D First Stage
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Initial_D_First_Stage.jpg
|
||||
- word: Kawaki wo Ameku
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kawaki_wo_Ameku.jpg
|
||||
- word: Koukaku Kidoutai
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koukaku_Kidoutai.jpg
|
||||
- word: Redline
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Redline.jpg
|
||||
- word: Tenkuu no Shiro Laputa
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tenkuu_no_Shiro_Laputa.jpg
|
||||
- word: Tokyo Godfathers
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tokyo_Godfathers.jpg
|
||||
- word: Tonari no Totoro
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tonari_no_Totoro.jpg
|
||||
- word: 'No Game No Life: Zero'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/No_Game_No_Life_Zero.jpg
|
||||
- word: 'Nomad: Megalo Box 2'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nomad_Megalo_Box_2.jpg
|
||||
- word: Quanzhi Gaoshou Specials
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Quanzhi_Gaoshou_Specials.jpg
|
||||
- word: Ashita no Joe
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ashita_no_Joe.jpg
|
||||
- word: 'Douluo Dalu: Xingdou Xian Ji Pian'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Xingdou_Xian_Ji_Pian.jpg
|
||||
- word: 'Gyakkyou Burai Kaiji: Ultimate Survivor'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gyakkyou_Burai_Kaiji_Ultimate_Survivor.jpg
|
||||
- word: 'Hajime no Ippo: Champion Road'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hajime_no_Ippo_Champion_Road.jpg
|
||||
- word: 'Hunter x Hunter: Greed Island Final'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hunter_x_Hunter_Greed_Island_Final.jpg
|
||||
- word: Re:Zero kara Hajimeru Isekai Seikatsu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/ReZero_kara_Hajimeru_Isekai_Seikatsu.jpg
|
||||
- word: Sennen Joyuu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Sennen_Joyuu.jpg
|
||||
- word: Stand By Me Doraemon 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Stand_By_Me_Doraemon_2.jpg
|
||||
- word: Yuru Camp
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yuru_Camp.jpg
|
||||
- word: 'Nodame Cantabile: Finale'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nodame_Cantabile_Finale.jpg
|
||||
- word: Ookami to Koushinryou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ookami_to_Koushinryou.jpg
|
||||
- word: Space Dandy 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/SpaceDandy_2nd_Season.jpg
|
||||
- word: Youjo Senki Movie
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Youjo_Senki_Movie.jpg
|
||||
- word: Boku no Hero Academia 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Boku_no_Hero_Academia_2nd_Season.jpg
|
||||
- word: Danshi Koukousei no Nichijou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Danshi_Koukousei_no_Nichijou.jpg
|
||||
- word: Kuroko no Basket 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroko_no_Basket_2nd_Season.jpg
|
||||
- word: 'Magi: The Kingdom of Magic'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Magi_The_Kingdom_of_Magic.jpg
|
||||
- word: 'Douluo Dalu: Hanhai Qian Kun'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Hanhai_Qian_Kun.jpg
|
||||
- word: 'Gyakkyou Burai Kaiji: Hakairoku-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gyakkyou_Burai_Kaiji_Hakairoku-hen.jpg
|
||||
- word: Hachimitsu to Clover II
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hachimitsu_to_Clover_II.jpg
|
||||
- word: Horimiya
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Horimiya.jpg
|
||||
- word: 'Kuroshitsuji Movie: Book of the Atlantic'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroshitsuji_Movie_Book_of_the_Atlantic.jpg
|
||||
- word: 'Non Non Biyori Movie: Vacation'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Non_Non_Biyori_Movie_Vacation.jpg
|
||||
- word: Wu Liuqi Zhi Zui Qiang Fa Xing Shi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Wu_Liuqi_Zhi_Zui_Qiang_Fa_Xing_Shi.jpg
|
||||
- word: Yahari Ore no Seishun Love Comedy wa Machigatteiru. Zoku
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yahari_Ore_no_Seishun_Love_Comedy_wa_Machigatteiru._Zoku.jpg
|
||||
- word: Shokugeki no Souma
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shokugeki_no_Souma.jpg
|
||||
- word: SKET Dance
|
||||
imageUrl: https://cdn.nadeko.bot/animu/SKET_Dance.jpg
|
||||
- word: Wu Liuqi Zhi Xuanwu Guo Pian
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Wu_Liuqi_Zhi_Xuanwu_Guo_Pian.jpg
|
||||
- word: xxxHOLiC Kei
|
||||
imageUrl: https://cdn.nadeko.bot/animu/xxxHOLiC_Kei.jpg
|
||||
- word: Initial D Final Stage
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Initial_D_Final_Stage.jpg
|
||||
- word: 'Diamond no Ace: Act II'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Diamond_no_Ace_Act_II.jpg
|
||||
- word: 'Hajime no Ippo: Mashiba vs. Kimura'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hajime_no_Ippo_Mashiba_vs._Kimura.jpg
|
||||
- word: Kono Sekai no Katasumi ni
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kono_Sekai_no_Katasumi_ni.jpg
|
||||
- word: Majo no Takkyuubin
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Majo_no_Takkyuubin.jpg
|
||||
- word: Mimi wo Sumaseba
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mimi_wo_Sumaseba.jpg
|
||||
- word: Trigun
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Trigun.jpg
|
||||
- word: 'ReLIFE: Kanketsu-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/ReLIFE_Kanketsu-hen.jpg
|
||||
- word: Toaru Kagaku no Railgun T
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Toaru_Kagaku_no_Railgun_T.jpg
|
||||
- word: xxxHOLiC Rou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/xxxHOLiC_Rou.jpg
|
||||
- word: Yoru wa Mijikashi Arukeyo Otome
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yoru_wa_Mijikashi_Arukeyo_Otome.jpg
|
||||
- word: Bakuman.
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bakuman..jpg
|
||||
- word: 'Cardcaptor Sakura Movie 2: Fuuin Sareta Card'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Cardcaptor_Sakura_Movie_2_Fuuin_Sareta_Card.jpg
|
||||
- word: Chihayafuru
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Chihayafuru.jpg
|
||||
- word: 'Douluo Dalu: Qian Hua Xi Jin'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Qian_Hua_Xi_Jin.jpg
|
||||
- word: 'Ginga Eiyuu Densetsu: Die Neue These - Seiran 3'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ginga_Eiyuu_Densetsu_Die_Neue_These_-_Seiran_3.jpg
|
||||
- word: Kaguya-hime no Monogatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaguya-hime_no_Monogatari.jpg
|
||||
- word: 'Little Busters!: Refrain'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Little_Busters_Refrain.jpg
|
||||
- word: Dororo
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dororo.jpg
|
||||
- word: 'Dr. Stone: Stone Wars'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dr._Stone_Stone_Wars.jpg
|
||||
- word: 'Fate/stay night: Unlimited Blade Works'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fatestay_night_Unlimited_Blade_Works.jpg
|
||||
- word: Girls & Panzer Movie
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Girls__Panzer_Movie.jpg
|
||||
- word: Golden Kamuy 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Golden_Kamuy_2nd_Season.jpg
|
||||
- word: Higurashi no Naku Koro ni Kai
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Higurashi_no_Naku_Koro_ni_Kai.jpg
|
||||
- word: 'InuYasha: Kanketsu-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/InuYasha_Kanketsu-hen.jpg
|
||||
- word: 'Saiki Kusuo no Ψ-nan: Kanketsu-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Saiki_Kusuo_no_-nan_Kanketsu-hen.jpg
|
||||
- word: 'One Piece Movie 14: Stampede'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Piece_Movie_14_Stampede.jpg
|
||||
- word: 'One Piece: Episode of Merry - Mou Hitori no Nakama no Monogatari'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Piece_Episode_of_Merry_-_Mou_Hitori_no_Nakama_no_Monogatari.jpg
|
||||
- word: Shoujo Kakumei Utena
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shoujo_Kakumei_Utena.jpg
|
||||
- word: Ballroom e Youkoso
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ballroom_e_Youkoso.jpg
|
||||
- word: 'Berserk: Ougon Jidai-hen III - Kourin'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Berserk_Ougon_Jidai-hen_III_-_Kourin.jpg
|
||||
- word: Bungou Stray Dogs 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bungou_Stray_Dogs_2nd_Season.jpg
|
||||
- word: 'Douluo Dalu: Haishen Zhi Guang'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Haishen_Zhi_Guang.jpg
|
||||
- word: Fruits Basket 1st Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fruits_Basket_1st_Season.jpg
|
||||
- word: 'Hunter x Hunter: Greed Island'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hunter_x_Hunter_Greed_Island.jpg
|
||||
- word: Liz to Aoi Tori
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Liz_to_Aoi_Tori.jpg
|
||||
- word: Aria the Natural
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Aria_the_Natural.jpg
|
||||
- word: Asobi Asobase
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Asobi_Asobase.jpg
|
||||
- word: 'Black Lagoon: The Second Barrage'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Black_Lagoon_The_Second_Barrage.jpg
|
||||
- word: Bungou Stray Dogs 3rd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Bungou_Stray_Dogs_3rd_Season.jpg
|
||||
- word: Death Parade
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Death_Parade.jpg
|
||||
- word: 'Digimon Adventure: Last Evolution Kizuna'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Digimon_Adventure_Last_Evolution_Kizuna.jpg
|
||||
- word: Hinamatsuri (TV)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hinamatsuri_TV.jpg
|
||||
- word: "Kyoukai no Kanata Movie 2: I'll Be Here - Mirai-hen"
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kyoukai_no_Kanata_Movie_2_Ill_Be_Here_-_Mirai-hen.jpg
|
||||
- word: Maison Ikkoku
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Maison_Ikkoku.jpg
|
||||
- word: 'Naruto: Shippuuden'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Naruto_Shippuuden.jpg
|
||||
- word: Non Non Biyori Repeat
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Non_Non_Biyori_Repeat.jpg
|
||||
- word: Noragami Aragoto
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Noragami_Aragoto.jpg
|
||||
- word: Ouran Koukou Host Club
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ouran_Koukou_Host_Club.jpg
|
||||
- word: Senki Zesshou Symphogear XV
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Senki_Zesshou_Symphogear_XV.jpg
|
||||
- word: Shoujo Shuumatsu Ryokou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shoujo_Shuumatsu_Ryokou.jpg
|
||||
- word: Toradora!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Toradora.jpg
|
||||
- word: 'Working!!!: Lord of the Takanashi'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Working_Lord_of_the_Takanashi.jpg
|
||||
- word: Boku no Hero Academia 3rd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Boku_no_Hero_Academia_3rd_Season.jpg
|
||||
- word: 'Douluo Dalu: Jingying Sai'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Jingying_Sai.jpg
|
||||
- word: 5-toubun no Hanayome ∬
|
||||
imageUrl: https://cdn.nadeko.bot/animu/5-toubun_no_Hanayome_.jpg
|
||||
- word: Akira
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Akira.jpg
|
||||
- word: Gankutsuou
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gankutsuou.jpg
|
||||
- word: Kamisama Hajimemashita◎
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kamisama_Hajimemashita.jpg
|
||||
- word: 'Lupin III: Part 5'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Lupin_III_Part_5.jpg
|
||||
- word: Mo Dao Zu Shi Q
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mo_Dao_Zu_Shi_Q.jpg
|
||||
- word: Nisemonogatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nisemonogatari.jpg
|
||||
- word: 'One Piece Film: Z'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Piece_Film_Z.jpg
|
||||
- word: Quanzhi Gaoshou Zhi Dianfeng Rongyao
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Quanzhi_Gaoshou_Zhi_Dianfeng_Rongyao.jpg
|
||||
- word: Toki wo Kakeru Shoujo
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Toki_wo_Kakeru_Shoujo.jpg
|
||||
- word: No Game No Life
|
||||
imageUrl: https://cdn.nadeko.bot/animu/No_Game_No_Life.jpg
|
||||
- word: 'Nodame Cantabile: Paris-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Nodame_Cantabile_Paris-hen.jpg
|
||||
- word: Sakura-sou no Pet na Kanojo
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Sakura-sou_no_Pet_na_Kanojo.jpg
|
||||
- word: Seirei no Moribito
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Seirei_no_Moribito.jpg
|
||||
- word: 'Shokugeki no Souma: Ni no Sara'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shokugeki_no_Souma_Ni_no_Sara.jpg
|
||||
- word: Cardcaptor Sakura
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Cardcaptor_Sakura.jpg
|
||||
- word: Detective Conan
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Detective_Conan.jpg
|
||||
- word: Durarara!!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Durarara.jpg
|
||||
- word: Eizouken ni wa Te wo Dasu na!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Eizouken_ni_wa_Te_wo_Dasu_na.jpg
|
||||
- word: Fate/Grand Carnival
|
||||
imageUrl: https://cdn.nadeko.bot/animu/FateGrand_Carnival.jpg
|
||||
- word: Kaiba
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaiba.jpg
|
||||
- word: Katekyo Hitman Reborn!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Katekyo_Hitman_Reborn.jpg
|
||||
- word: "Mahou Shoujo Lyrical Nanoha: The Movie 2nd A's"
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mahou_Shoujo_Lyrical_Nanoha_The_Movie_2nd_As.jpg
|
||||
- word: Dragon Ball Z
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dragon_Ball_Z.jpg
|
||||
- word: Fullmetal Alchemist
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Fullmetal_Alchemist.jpg
|
||||
- word: Ginga Eiyuu Densetsu Gaiden
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ginga_Eiyuu_Densetsu_Gaiden.jpg
|
||||
- word: Given Movie
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Given_Movie.jpg
|
||||
- word: K-On!!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/K-On.jpg
|
||||
- word: 'Lupin III: Cagliostro no Shiro'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Lupin_III_Cagliostro_no_Shiro.jpg
|
||||
- word: 'One Piece Film: Strong World'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Piece_Film_Strong_World.jpg
|
||||
- word: Tanoshii Muumin Ikka
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tanoshii_Muumin_Ikka.jpg
|
||||
- word: 'One Piece: Episode of Nami - Koukaishi no Namida to Nakama no Kizuna'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/One_Piece_Episode_of_Nami_-_Koukaishi_no_Namida_to_Nakama_no_Kizuna.jpg
|
||||
- word: Princess Tutu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Princess_Tutu.jpg
|
||||
- word: Tokyo Revengers
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tokyo_Revengers.jpg
|
||||
- word: Tsuki ga Kirei
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tsuki_ga_Kirei.jpg
|
||||
- word: 'Chuunibyou demo Koi ga Shitai! Movie: Take On Me'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Chuunibyou_demo_Koi_ga_Shitai_Movie_Take_On_Me.jpg
|
||||
- word: 'Douluo Dalu: Hao Tian Yang Wei'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Douluo_Dalu_Hao_Tian_Yang_Wei.jpg
|
||||
- word: 'Honzuki no Gekokujou: Shisho ni Naru Tame ni wa Shudan wo Erandeiraremasen 2nd Season'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Honzuki_no_Gekokujou_Shisho_ni_Naru_Tame_ni_wa_Shudan_wo_Erandeiraremasen_2nd_Season.jpg
|
||||
- word: Initial D Fourth Stage
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Initial_D_Fourth_Stage.jpg
|
||||
- word: 'Interstella5555: The 5tory of The 5ecret 5tar 5ystem'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Interstella5555_The_5tory_of_The_5ecret_5tar_5ystem.jpg
|
||||
- word: Kono Subarashii Sekai ni Shukufuku wo!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kono_Subarashii_Sekai_ni_Shukufuku_wo.jpg
|
||||
- word: 'Made in Abyss Movie 1: Tabidachi no Yoake'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Made_in_Abyss_Movie_1_Tabidachi_no_Yoake.jpg
|
||||
- word: Baccano! Specials
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Baccano_Specials.jpg
|
||||
- word: Detroit Metal City
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Detroit_Metal_City.jpg
|
||||
- word: Hyouka
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hyouka.jpg
|
||||
- word: Kanata no Astra
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kanata_no_Astra.jpg
|
||||
- word: 'Koukaku Kidoutai: Stand Alone Complex - Solid State Society'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koukaku_Kidoutai_Stand_Alone_Complex_-_Solid_State_Society.jpg
|
||||
- word: Kuragehime
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuragehime.jpg
|
||||
- word: 'Mahoutsukai no Yome: Hoshi Matsu Hito'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mahoutsukai_no_Yome_Hoshi_Matsu_Hito.jpg
|
||||
- word: Mobile Suit Gundam 00
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mobile_Suit_Gundam_00.jpg
|
||||
- word: Tsukimonogatari
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tsukimonogatari.jpg
|
||||
- word: Uchouten Kazoku 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Uchouten_Kazoku_2.jpg
|
||||
- word: Pui Pui Molcar
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Pui_Pui_Molcar.jpg
|
||||
- word: 'Saiki Kusuo no Ψ-nan: Ψ-shidou-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Saiki_Kusuo_no_-nan_-shidou-hen.jpg
|
||||
- word: 'Tsubasa: Shunraiki'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tsubasa_Shunraiki.jpg
|
||||
- word: Zankyou no Terror
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Zankyou_no_Terror.jpg
|
||||
- word: Angel Beats!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Angel_Beats.jpg
|
||||
- word: 'Ginga Eiyuu Densetsu: Arata Naru Tatakai no Overture'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ginga_Eiyuu_Densetsu_Arata_Naru_Tatakai_no_Overture.jpg
|
||||
- word: 'IDOLiSH7: Second Beat!'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/IDOLiSH7_Second_Beat.jpg
|
||||
- word: Initial D Second Stage
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Initial_D_Second_Stage.jpg
|
||||
- word: Kuroko no Basket
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroko_no_Basket.jpg
|
||||
- word: Ansatsu Kyoushitsu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ansatsu_Kyoushitsu.jpg
|
||||
- word: Diamond no Ace
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Diamond_no_Ace.jpg
|
||||
- word: 'Dragon Ball Super: Broly'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dragon_Ball_Super_Broly.jpg
|
||||
- word: 'Haikyuu!! Movie 4: Concept no Tatakai'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Haikyuu_Movie_4_Concept_no_Tatakai.jpg
|
||||
- word: Karakai Jouzu no Takagi-san 2
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Karakai_Jouzu_no_Takagi-san_2.jpg
|
||||
- word: Kaze Tachinu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kaze_Tachinu.jpg
|
||||
- word: Skip Beat!
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Skip_Beat.jpg
|
||||
- word: 'Saint Seiya: The Lost Canvas - Meiou Shinwa 2'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Saint_Seiya_The_Lost_Canvas_-_Meiou_Shinwa_2.jpg
|
||||
- word: 'Tamayura: Sotsugyou Shashin Part 4 - Ashita'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tamayura_Sotsugyou_Shashin_Part_4_-_Ashita.jpg
|
||||
- word: Wonder Egg Priority
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Wonder_Egg_Priority.jpg
|
||||
- word: World Trigger 2nd Season
|
||||
imageUrl: https://cdn.nadeko.bot/animu/World_Trigger_2nd_Season.jpg
|
||||
- word: 'Yowamushi Pedal: Grande Road'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yowamushi_Pedal_Grande_Road.jpg
|
||||
- word: 'Darker than Black: Kuro no Keiyakusha'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Darker_than_Black_Kuro_no_Keiyakusha.jpg
|
||||
- word: 'Evangelion: 3.0+1.0 Thrice Upon a Time'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Evangelion_3.01.0_Thrice_Upon_a_Time.jpg
|
||||
- word: Gin no Saji
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gin_no_Saji.jpg
|
||||
- word: 'Hajime no Ippo: Boxer no Kobushi'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hajime_no_Ippo_Boxer_no_Kobushi.jpg
|
||||
- word: Hikaru no Go
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hikaru_no_Go.jpg
|
||||
- word: 'JoJo no Kimyou na Bouken Part 3: Stardust Crusaders'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/JoJo_no_Kimyou_na_Bouken_Part_3_Stardust_Crusaders.jpg
|
||||
- word: 'Kamisama Hajimemashita: Kamisama, Shiawase ni Naru'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kamisama_Hajimemashita_Kamisama_Shiawase_ni_Naru.jpg
|
||||
- word: 'Kuroko no Basket: Saikou no Present Desu'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroko_no_Basket_Saikou_no_Present_Desu.jpg
|
||||
- word: 'Kuroshitsuji: Book of Circus'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroshitsuji_Book_of_Circus.jpg
|
||||
- word: Akatsuki no Yona OVA
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Akatsuki_no_Yona_OVA.jpg
|
||||
- word: Dorohedoro
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dorohedoro.jpg
|
||||
- word: Durarara!!x2 Ketsu
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Durararax2_Ketsu.jpg
|
||||
- word: 'Ginga Eiyuu Densetsu: Die Neue These - Seiran 2'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ginga_Eiyuu_Densetsu_Die_Neue_These_-_Seiran_2.jpg
|
||||
- word: Gosick
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Gosick.jpg
|
||||
- word: 'Hidamari Sketch: Sae Hiro Sotsugyou-hen'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Hidamari_Sketch_Sae_Hiro_Sotsugyou-hen.jpg
|
||||
- word: 'Koukaku Kidoutai: Stand Alone Complex - The Laughing Man'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koukaku_Kidoutai_Stand_Alone_Complex_-_The_Laughing_Man.jpg
|
||||
- word: 'Kuroshitsuji: Book of Murder'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kuroshitsuji_Book_of_Murder.jpg
|
||||
- word: Mirai Shounen Conan
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Mirai_Shounen_Conan.jpg
|
||||
- word: Omoide no Marnie
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Omoide_no_Marnie.jpg
|
||||
- word: Shijou Saikyou no Deshi Kenichi
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shijou_Saikyou_no_Deshi_Kenichi.jpg
|
||||
- word: 'Shokugeki no Souma: San no Sara'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Shokugeki_no_Souma_San_no_Sara.jpg
|
||||
- word: Tensei shitara Slime Datta Ken
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Tensei_shitara_Slime_Datta_Ken.jpg
|
||||
- word: 'Ramayana: The Legend of Prince Rama'
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ramayana_The_Legend_of_Prince_Rama.jpg
|
||||
- word: Summer Wars
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Summer_Wars.jpg
|
||||
- word: Yuusha-Ou GaoGaiGar Final
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Yuusha-Ou_GaoGaiGar_Final.jpg
|
||||
- word: Dennou Coil
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Dennou_Coil.jpg
|
||||
- word: Ginga Eiyuu Densetsu Gaiden (1999)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Ginga_Eiyuu_Densetsu_Gaiden_1999.jpg
|
||||
- word: Glass no Kamen (2005)
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Glass_no_Kamen_2005.jpg
|
||||
- word: Kill la Kill
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Kill_la_Kill.jpg
|
||||
- word: Koukyoushihen Eureka Seven
|
||||
imageUrl: https://cdn.nadeko.bot/animu/Koukyoushihen_Eureka_Seven.jpg
|
390
src/NadekoBot/data/hangman/countries.yml
Normal file
390
src/NadekoBot/data/hangman/countries.yml
Normal file
@@ -0,0 +1,390 @@
|
||||
- word: Afghanistan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/af-flag.gif
|
||||
- word: Albania
|
||||
imageUrl: https://cdn.nadeko.bot/flags/al-flag.gif
|
||||
- word: Algeria
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ag-flag.gif
|
||||
- word: Andorra
|
||||
imageUrl: https://cdn.nadeko.bot/flags/an-flag.gif
|
||||
- word: Angola
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ao-flag.gif
|
||||
- word: Antigua and Barbuda
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ac-flag.gif
|
||||
- word: Argentina
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ar-flag.gif
|
||||
- word: Armenia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/am-flag.gif
|
||||
- word: Australia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/as-flag.gif
|
||||
- word: Austria
|
||||
imageUrl: https://cdn.nadeko.bot/flags/au-flag.gif
|
||||
- word: Azerbaijan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/aj-flag.gif
|
||||
- word: Bahamas
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bf-flag.gif
|
||||
- word: Bahrain
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ba-flag.gif
|
||||
- word: Bangladesh
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bg-flag.gif
|
||||
- word: Barbados
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bb-flag.gif
|
||||
- word: Belarus
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bo-flag.gif
|
||||
- word: Belgium
|
||||
imageUrl: https://cdn.nadeko.bot/flags/be-flag.gif
|
||||
- word: Belize
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bh-flag.gif
|
||||
- word: Benin
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bn-flag.gif
|
||||
- word: Bhutan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bt-flag.gif
|
||||
- word: Bolivia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bl-flag.gif
|
||||
- word: Bosnia and Herzegovina
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bk-flag.gif
|
||||
- word: Botswana
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bc-flag.gif
|
||||
- word: Brazil
|
||||
imageUrl: https://cdn.nadeko.bot/flags/br-flag.gif
|
||||
- word: Brunei
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bx-flag.gif
|
||||
- word: Bulgaria
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bu-flag.gif
|
||||
- word: Burkina Faso
|
||||
imageUrl: https://cdn.nadeko.bot/flags/uv-flag.gif
|
||||
- word: Burundi
|
||||
imageUrl: https://cdn.nadeko.bot/flags/by-flag.gif
|
||||
- word: Ivory Coast
|
||||
imageUrl: https://cdn.nadeko.bot/flags/iv-flag.gif
|
||||
- word: Cabo Verde
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cv-flag.gif
|
||||
- word: Cambodia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cb-flag.gif
|
||||
- word: Cameroon
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cm-flag.gif
|
||||
- word: Canada
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ca-flag.gif
|
||||
- word: Central African Republic
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ct-flag.gif
|
||||
- word: Chad
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cd-flag.gif
|
||||
- word: Chile
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ci-flag.gif
|
||||
- word: China
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ch-flag.gif
|
||||
- word: Colombia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/co-flag.gif
|
||||
- word: Comoros
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cn-flag.gif
|
||||
- word: Congo
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cg-flag.gif
|
||||
- word: Costa Rica
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cs-flag.gif
|
||||
- word: Croatia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/hr-flag.gif
|
||||
- word: Cuba
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cu-flag.gif
|
||||
- word: Cyprus
|
||||
imageUrl: https://cdn.nadeko.bot/flags/cy-flag.gif
|
||||
- word: Czechia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ez-flag.gif
|
||||
- word: Denmark
|
||||
imageUrl: https://cdn.nadeko.bot/flags/da-flag.gif
|
||||
- word: Djibouti
|
||||
imageUrl: https://cdn.nadeko.bot/flags/dj-flag.gif
|
||||
- word: Dominica
|
||||
imageUrl: https://cdn.nadeko.bot/flags/do-flag.gif
|
||||
- word: Dominican Republic
|
||||
imageUrl: https://cdn.nadeko.bot/flags/dr-flag.gif
|
||||
- word: Democratic People's Republic of Korea
|
||||
imageUrl: https://cdn.nadeko.bot/flags/kn-flag.gif
|
||||
- word: Democratic Republic of the Congo
|
||||
imageUrl: https://cdn.nadeko.bot/flags/congo-flag.gif
|
||||
- word: Ecuador
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ec-flag.gif
|
||||
- word: Egypt
|
||||
imageUrl: https://cdn.nadeko.bot/flags/eg-flag.gif
|
||||
- word: El Salvador
|
||||
imageUrl: https://cdn.nadeko.bot/flags/es-flag.gif
|
||||
- word: Equatorial Guinea
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ek-flag.gif
|
||||
- word: Eritrea
|
||||
imageUrl: https://cdn.nadeko.bot/flags/er-flag.gif
|
||||
- word: Estonia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/en-flag.gif
|
||||
- word: Eswatini
|
||||
imageUrl: https://cdn.nadeko.bot/flags/wz-flag.gif
|
||||
- word: Ethiopia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/et-flag.gif
|
||||
- word: Fiji
|
||||
imageUrl: https://cdn.nadeko.bot/flags/fj-flag.gif
|
||||
- word: Finland
|
||||
imageUrl: https://cdn.nadeko.bot/flags/fi-flag.gif
|
||||
- word: France
|
||||
imageUrl: https://cdn.nadeko.bot/flags/fr-flag.gif
|
||||
- word: Gabon
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gb-flag.gif
|
||||
- word: Gambia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ga-flag.gif
|
||||
- word: Georgia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gg-flag.gif
|
||||
- word: Germany
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gm-flag.gif
|
||||
- word: Ghana
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gh-flag.gif
|
||||
- word: Greece
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gr-flag.gif
|
||||
- word: Grenada
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gj-flag.gif
|
||||
- word: Guatemala
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gt-flag.gif
|
||||
- word: Guinea
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gv-flag.gif
|
||||
- word: Guinea-Bissau
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pu-flag.gif
|
||||
- word: Guyana
|
||||
imageUrl: https://cdn.nadeko.bot/flags/gy-flag.gif
|
||||
- word: Haiti
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ha-flag.gif
|
||||
- word: Holy See
|
||||
imageUrl: https://cdn.nadeko.bot/flags/vt-flag.gif
|
||||
- word: Honduras
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ho-flag.gif
|
||||
- word: Hungary
|
||||
imageUrl: https://cdn.nadeko.bot/flags/hu-flag.gif
|
||||
- word: Iceland
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ic-flag.gif
|
||||
- word: India
|
||||
imageUrl: https://cdn.nadeko.bot/flags/in-flag.gif
|
||||
- word: Indonesia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/id-flag.gif
|
||||
- word: Iran
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ir-flag.gif
|
||||
- word: Iraq
|
||||
imageUrl: https://cdn.nadeko.bot/flags/iz-flag.gif
|
||||
- word: Ireland
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ei-flag.gif
|
||||
- word: Israel
|
||||
imageUrl: https://cdn.nadeko.bot/flags/is-flag.gif
|
||||
- word: Italy
|
||||
imageUrl: https://cdn.nadeko.bot/flags/it-flag.gif
|
||||
- word: Jamaica
|
||||
imageUrl: https://cdn.nadeko.bot/flags/jm-flag.gif
|
||||
- word: Japan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ja-flag.gif
|
||||
- word: Jordan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/jo-flag.gif
|
||||
- word: Kazakhstan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/kz-flag.gif
|
||||
- word: Kenya
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ke-flag.gif
|
||||
- word: Kiribati
|
||||
imageUrl: https://cdn.nadeko.bot/flags/kr-flag.gif
|
||||
- word: Kuwait
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ku-flag.gif
|
||||
- word: Kyrgyzstan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/kg-flag.gif
|
||||
- word: Laos
|
||||
imageUrl: https://cdn.nadeko.bot/flags/la-flag.gif
|
||||
- word: Latvia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/lg-flag.gif
|
||||
- word: Lebanon
|
||||
imageUrl: https://cdn.nadeko.bot/flags/le-flag.gif
|
||||
- word: Lesotho
|
||||
imageUrl: https://cdn.nadeko.bot/flags/lt-flag.gif
|
||||
- word: Liberia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/li-flag.gif
|
||||
- word: Libya
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ly-flag.gif
|
||||
- word: Liechtenstein
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ls-flag.gif
|
||||
- word: Lithuania
|
||||
imageUrl: https://cdn.nadeko.bot/flags/lh-flag.gif
|
||||
- word: Luxembourg
|
||||
imageUrl: https://cdn.nadeko.bot/flags/lu-flag.gif
|
||||
- word: Madagascar
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ma-flag.gif
|
||||
- word: Malawi
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mi-flag.gif
|
||||
- word: Malaysia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/my-flag.gif
|
||||
- word: Maldives
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mv-flag.gif
|
||||
- word: Mali
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ml-flag.gif
|
||||
- word: Malta
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mt-flag.gif
|
||||
- word: Marshall Islands
|
||||
imageUrl: https://cdn.nadeko.bot/flags/rm-flag.gif
|
||||
- word: Mauritania
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mr-flag.gif
|
||||
- word: Mauritius
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mp-flag.gif
|
||||
- word: Mexico
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mx-flag.gif
|
||||
- word: Micronesia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/fm-flag.gif
|
||||
- word: Moldova
|
||||
imageUrl: https://cdn.nadeko.bot/flags/md-flag.gif
|
||||
- word: Monaco
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mn-flag.gif
|
||||
- word: Mongolia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mg-flag.gif
|
||||
- word: Montenegro
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mj-flag.gif
|
||||
- word: Morocco
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mo-flag.gif
|
||||
- word: Mozambique
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mz-flag.gif
|
||||
- word: Myanmar
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bm-flag.gif
|
||||
- word: Namibia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/wa-flag.gif
|
||||
- word: Nauru
|
||||
imageUrl: https://cdn.nadeko.bot/flags/nr-flag.gif
|
||||
- word: Nepal
|
||||
imageUrl: https://cdn.nadeko.bot/flags/np-flag.gif
|
||||
- word: Netherlands
|
||||
imageUrl: https://cdn.nadeko.bot/flags/nl-flag.gif
|
||||
- word: New Zealand
|
||||
imageUrl: https://cdn.nadeko.bot/flags/nz-flag.gif
|
||||
- word: Nicaragua
|
||||
imageUrl: https://cdn.nadeko.bot/flags/nu-flag.gif
|
||||
- word: Niger
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ng-flag.gif
|
||||
- word: Nigeria
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ni-flag.gif
|
||||
- word: North Macedonia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mk-flag.gif
|
||||
- word: Norway
|
||||
imageUrl: https://cdn.nadeko.bot/flags/no-flag.gif
|
||||
- word: Oman
|
||||
imageUrl: https://cdn.nadeko.bot/flags/mu-flag.gif
|
||||
- word: Pakistan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pk-flag.gif
|
||||
- word: Palau
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ps-flag.gif
|
||||
- word: Panama
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pm-flag.gif
|
||||
- word: Papua New Guinea
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pp-flag.gif
|
||||
- word: Paraguay
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pa-flag.gif
|
||||
- word: Peru
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pe-flag.gif
|
||||
- word: Philippines
|
||||
imageUrl: https://cdn.nadeko.bot/flags/rp-flag.gif
|
||||
- word: Poland
|
||||
imageUrl: https://cdn.nadeko.bot/flags/pl-flag.gif
|
||||
- word: Portugal
|
||||
imageUrl: https://cdn.nadeko.bot/flags/po-flag.gif
|
||||
- word: Qatar
|
||||
imageUrl: https://cdn.nadeko.bot/flags/qa-flag.gif
|
||||
- word: Romania
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ro-flag.gif
|
||||
- word: Russia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/rs-flag.gif
|
||||
- word: Rwanda
|
||||
imageUrl: https://cdn.nadeko.bot/flags/rw-flag.gif
|
||||
- word: Saint Kitts and Nevis
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sc-flag.gif
|
||||
- word: Saint Lucia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/st-flag.gif
|
||||
- word: Samoa
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ws-flag.gif
|
||||
- word: San Marino
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sm-flag.gif
|
||||
- word: Sao Tome and Principe
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tp-flag.gif
|
||||
- word: Saudi Arabia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sa-flag.gif
|
||||
- word: Senegal
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sg-flag.gif
|
||||
- word: Serbia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ri-flag.gif
|
||||
- word: Seychelles
|
||||
imageUrl: https://cdn.nadeko.bot/flags/se-flag.gif
|
||||
- word: Sierra Leone
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sl-flag.gif
|
||||
- word: Singapore
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sn-flag.gif
|
||||
- word: Slovakia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/lo-flag.gif
|
||||
- word: Slovenia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/si-flag.gif
|
||||
- word: Solomon Islands
|
||||
imageUrl: https://cdn.nadeko.bot/flags/bp-flag.gif
|
||||
- word: Somalia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/so-flag.gif
|
||||
- word: South Africa
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sf-flag.gif
|
||||
- word: South Korea
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ks-flag.gif
|
||||
- word: South Sudan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/od-flag.gif
|
||||
- word: Spain
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sp-flag.gif
|
||||
- word: Sri Lanka
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ce-flag.gif
|
||||
- word: St. Vincent Grenadines
|
||||
imageUrl: https://cdn.nadeko.bot/flags/vc-flag.gif
|
||||
- word: State of Palestine
|
||||
imageUrl: https://cdn.nadeko.bot/flags/palestine-flag.gif
|
||||
- word: Sudan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/su-flag.gif
|
||||
- word: Suriname
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ns-flag.gif
|
||||
- word: Sweden
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sw-flag.gif
|
||||
- word: Switzerland
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sz-flag.gif
|
||||
- word: Syria
|
||||
imageUrl: https://cdn.nadeko.bot/flags/sy-flag.gif
|
||||
- word: Tajikistan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ti-flag.gif
|
||||
- word: Tanzania
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tz-flag.gif
|
||||
- word: Thailand
|
||||
imageUrl: https://cdn.nadeko.bot/flags/th-flag.gif
|
||||
- word: Timor-Leste
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tt-flag.gif
|
||||
- word: Togo
|
||||
imageUrl: https://cdn.nadeko.bot/flags/to-flag.gif
|
||||
- word: Tonga
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tn-flag.gif
|
||||
- word: Trinidad and Tobago
|
||||
imageUrl: https://cdn.nadeko.bot/flags/td-flag.gif
|
||||
- word: Tunisia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ts-flag.gif
|
||||
- word: Turkey
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tu-flag.gif
|
||||
- word: Turkmenistan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tx-flag.gif
|
||||
- word: Tuvalu
|
||||
imageUrl: https://cdn.nadeko.bot/flags/tv-flag.gif
|
||||
- word: United Arab Emirates
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ae-flag.gif
|
||||
- word: United Kingdom
|
||||
imageUrl: https://cdn.nadeko.bot/flags/uk-flag.gif
|
||||
- word: United States Of America
|
||||
imageUrl: https://cdn.nadeko.bot/flags/us-flag.gif
|
||||
- word: Uganda
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ug-flag.gif
|
||||
- word: Ukraine
|
||||
imageUrl: https://cdn.nadeko.bot/flags/up-flag.gif
|
||||
- word: Uruguay
|
||||
imageUrl: https://cdn.nadeko.bot/flags/uy-flag.gif
|
||||
- word: Uzbekistan
|
||||
imageUrl: https://cdn.nadeko.bot/flags/uz-flag.gif
|
||||
- word: Vanuatu
|
||||
imageUrl: https://cdn.nadeko.bot/flags/nh-flag.gif
|
||||
- word: Venezuela
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ve-flag.gif
|
||||
- word: Vietnam
|
||||
imageUrl: https://cdn.nadeko.bot/flags/vm-flag.gif
|
||||
- word: Yemen
|
||||
imageUrl: https://cdn.nadeko.bot/flags/ym-flag.gif
|
||||
- word: Zambia
|
||||
imageUrl: https://cdn.nadeko.bot/flags/za-flag.gif
|
||||
- word: Zimbabwe
|
||||
imageUrl: https://cdn.nadeko.bot/flags/zi-flag.gif
|
400
src/NadekoBot/data/hangman/movies.yml
Normal file
400
src/NadekoBot/data/hangman/movies.yml
Normal file
@@ -0,0 +1,400 @@
|
||||
- word: 'Underworld: Blood Wars'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/PIXSMakrO3s2dqA7mCvAAoVR0E.jpg
|
||||
- word: Fantastic Beasts and Where to Find Them
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6I2tPx6KIiBB4TWFiWwNUzrbxUn.jpg
|
||||
- word: Suicide Squad
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/34dxtTxMHGKw1njHpTjDqR8UBHd.jpg
|
||||
- word: Miss Peregrine's Home for Peculiar Children
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qXQinDhDZkTiqEGLnav0h1YSUu8.jpg
|
||||
- word: Sully
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/vC9H1ZVdXi1KjH4aPfGB54mvDNh.jpg
|
||||
- word: Arrival
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/yIZ1xendyqKvY3FGeeUYUd5X9Mm.jpg
|
||||
- word: Doctor Strange
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/tFI8VLMgSTTU38i8TIsklfqS9Nl.jpg
|
||||
- word: 'Mad Max: Fury Road'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/tbhdm8UJAb4ViCTsulYFL3lxMCd.jpg
|
||||
- word: Interstellar
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/xu9zaAevzQ5nnrsXN6JcahLnG4i.jpg
|
||||
- word: Jason Bourne
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/AoT2YrJUJlg5vKE3iMOLvHlTd3m.jpg
|
||||
- word: 'Captain America: Civil War'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/m5O3SZvQ6EgD5XXXLPIP1wLppeW.jpg
|
||||
- word: Moana
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/1qGzqGUd1pa05aqYXGSbLkiBlLB.jpg
|
||||
- word: 'The Hunger Games: Mockingjay - Part 1'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/83nHcz2KcnEpPXY50Ky2VldewJJ.jpg
|
||||
- word: Underworld
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/cPhRPAJWK8BuuJqqf6PztzvOlnZ.jpg
|
||||
- word: The Secret Life of Pets
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/lubzBMQLLmG88CLQ4F3TxZr2Q7N.jpg
|
||||
- word: Insurgent
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/L5QRL1O3fGs2hH1LbtYyVl8Tce.jpg
|
||||
- word: Jurassic World
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/dkMD5qlogeRMiEixC4YNPUvax2T.jpg
|
||||
- word: Ben-Hur
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/A4xbEpe9LevQCdvaNC0z6r8AfYk.jpg
|
||||
- word: Finding Dory
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/iWRKYHTFlsrxQtfQqFOQyceL83P.jpg
|
||||
- word: Guardians of the Galaxy
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bHarw8xrmQeqf3t8HpuMY7zoK4x.jpg
|
||||
- word: Ghostbusters
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/58bvfg9b040GDmKffLUJsEjg779.jpg
|
||||
- word: Inferno
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/anmLLbDx9d98NMZRyVUtxwJR6ab.jpg
|
||||
- word: Star Trek Beyond
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6uBlEXZCUHM15UNZqNig17VdN4m.jpg
|
||||
- word: The BFG
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/eYT9XQBo1eC4DwPYqhCol0dFFc2.jpg
|
||||
- word: Pete's Dragon
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/AaRhHX0Jfpju0O6hNzScPRgX9Mm.jpg
|
||||
- word: 'Mechanic: Resurrection'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6kMu4vECAyTpj2Z7n8viJ4RAaYh.jpg
|
||||
- word: The Imitation Game
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qcb6z1HpokTOKdjqDTsnjJk0Xvg.jpg
|
||||
- word: 'X-Men: Apocalypse'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/oQWWth5AOtbWG9o8SCAviGcADed.jpg
|
||||
- word: John Wick
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/mFb0ygcue4ITixDkdr7wm1Tdarx.jpg
|
||||
- word: Deadpool
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/n1y094tVDFATSzkTnFxoGZ1qNsG.jpg
|
||||
- word: 'Batman v Superman: Dawn of Justice'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/vsjBeMPZtyB7yNsYY56XYxifaQZ.jpg
|
||||
- word: The Revenant
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/kiWvoV78Cc3fUwkOHKzyBgVdrDD.jpg
|
||||
- word: Now You See Me 2
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/zrAO2OOa6s6dQMQ7zsUbDyIBrAP.jpg
|
||||
- word: 'Star Wars: The Force Awakens'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/c2Ax8Rox5g6CneChwy1gmu4UbSb.jpg
|
||||
- word: The Martian
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/sy3e2e4JwdAtd2oZGA2uUilZe8j.jpg
|
||||
- word: Bridget Jones's Baby
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/w9VNDcQet0TUoLRWHg8JbT4QjpW.jpg
|
||||
- word: Minions
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/uX7LXnsC7bZJZjn048UCOwkPXWJ.jpg
|
||||
- word: Star Wars
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/4iJfYYoQzZcONB9hNzg0J0wWyPH.jpg
|
||||
- word: Spectre
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/wVTYlkKPKrljJfugXN7UlLNjtuJ.jpg
|
||||
- word: 'Rogue One: A Star Wars Story'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/tZjVVIYXACV4IIIhXeIM59ytqwS.jpg
|
||||
- word: Big Hero 6
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/2BXd0t9JdVqCp9sKf6kzMkr7QjB.jpg
|
||||
- word: 'Independence Day: Resurgence'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8SqBiesvo1rh9P1hbJTmnVum6jv.jpg
|
||||
- word: The Dark Knight
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nnMC0BM6XbjIIrT4miYmMtPGcQV.jpg
|
||||
- word: Sausage Party
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nBvyktlVHjLx5nZ9Oxaoqo5jwbf.jpg
|
||||
- word: Gone Girl
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bt6DhdALyhf90gReozoQ0y3R3vZ.jpg
|
||||
- word: Zootopia
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/mhdeE1yShHTaDbJVdWyTlzFvNkr.jpg
|
||||
- word: Allegiant
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/sFthBeT0Y3WVfg6b3MkcJs9qfzq.jpg
|
||||
- word: 'The Hobbit: The Battle of the Five Armies'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qhH3GyIfAnGv1pjdV3mw03qAilg.jpg
|
||||
- word: Fury
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/pKawqrtCBMmxarft7o1LbEynys7.jpg
|
||||
- word: The Jungle Book
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/eIOTsGg9FCVrBc4r2nXaV61JF4F.jpg
|
||||
- word: 'Jack Reacher: Never Go Back'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/4ynQYtSEuU5hyipcGkfD6ncwtwz.jpg
|
||||
- word: 'Pirates of the Caribbean: The Curse of the Black Pearl'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8AUQ7YlJJA9C8kWk8P4YNHIcFDE.jpg
|
||||
- word: 'The Hunger Games: Mockingjay - Part 2'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qjn3fzCAHGfl0CzeUlFbjrsmu4c.jpg
|
||||
- word: Hell or High Water
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/5GbRKOQSY08U3SQXXcQAKEnL2rE.jpg
|
||||
- word: Terminator Genisys
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bIlYH4l2AyYvEysmS2AOfjO7Dn8.jpg
|
||||
- word: Ant-Man
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/kvXLZqY0Ngl1XSw7EaMQO0C1CCj.jpg
|
||||
- word: The Shallows
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/lEkHdk4g0nAKtMcHBtSmC1ON3O1.jpg
|
||||
- word: 'Underworld: Awakening'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8iNsXY3LPsuT0gnUiTBMoNuRZI7.jpg
|
||||
- word: Inception
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/s2bT29y0ngXxxu2IA8AOzzXTRhd.jpg
|
||||
- word: 'Underworld: Evolution'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/lLZTsh8qDZsHCG9GMnqZKIlluZT.jpg
|
||||
- word: The Hateful Eight
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/sSvgNBeBNzAuKl8U8sP50ETJPgx.jpg
|
||||
- word: Fight Club
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/wSJPjqp2AZWQ6REaqkMuXsCIs64.jpg
|
||||
- word: 'Avengers: Age of Ultron'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/570qhjGZmGPrBGnfx70jcwIuBr4.jpg
|
||||
- word: 'Underworld: Rise of the Lycans'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/gVfnoiCJBdv2SN7poIbU7eyNVq1.jpg
|
||||
- word: Tomorrowland
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/fQbc5XuB4vWA9gnY1CmyxFaOufF.jpg
|
||||
- word: The Matrix
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/7u3pxc0K1wx32IleAkLv78MKgrw.jpg
|
||||
- word: Furious 7
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/ypyeMfKydpyuuTMdp36rMlkGDUL.jpg
|
||||
- word: Pixels
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nvZVu6inpwLHKqRXZhye3S4uqei.jpg
|
||||
- word: Emerald Green
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/ioKU3dEgx0HeUWp3KI2X7YF8FdC.jpg
|
||||
- word: Whiplash
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6bbZ6XyvgfjhQwbplnUh1LSj1ky.jpg
|
||||
- word: The Legend of Tarzan
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/pWNBPN8ghaKtGLcQBMwNyM32Wbm.jpg
|
||||
- word: Lucy
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/eCgIoGvfNXrbSiQGqQHccuHjQHm.jpg
|
||||
- word: Allied
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6o4KCKjP1WcefXLBNRyhEenB2nW.jpg
|
||||
- word: Eliminators
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/lNhwy85HjhieIVfmWoDAL2wCchB.jpg
|
||||
- word: 'Ice Age: Collision Course'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/o29BFNqgXOUT1yHNYusnITsH7P9.jpg
|
||||
- word: Batman Begins
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/65JWXDCAfwHhJKnDwRnEgVB411X.jpg
|
||||
- word: Teenage Mutant Ninja Turtles
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/OqCXGt5nl1cHPeotxCDvXLLe6p.jpg
|
||||
- word: Birdman
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/hUDEHvhNJLNcb83Pp7xnFn0Wj09.jpg
|
||||
- word: Avatar
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/5XPPB44RQGfkBrbJxmtdndKz05n.jpg
|
||||
- word: 'Kingsman: The Secret Service'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/pfyWJUxrBTT2UIPoEQF3iFTHcQT.jpg
|
||||
- word: "Pirates of the Caribbean: At World's End"
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8ZgpAftUiYTU76IhUADITa3Ur9n.jpg
|
||||
- word: Bad Moms
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/elPpPBuYB2Zn5wFwz2FSlJlKUjp.jpg
|
||||
- word: Inside Out
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/szytSpLAyBh3ULei3x663mAv5ZT.jpg
|
||||
- word: Harry Potter and the Philosopher's Stone
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/uD93T339xX1k3fnDUaeopZBiajY.jpg
|
||||
- word: Dawn of the Planet of the Apes
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/rjUl3pd1LHVOVfG4IGcyA1cId5l.jpg
|
||||
- word: Iron Man
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/ZQixhAZx6fH1VNafFXsqa1B8QI.jpg
|
||||
- word: The Dark Knight Rises
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/3bgtUfKQKNi3nJsAB5URpP2wdRt.jpg
|
||||
- word: Don't Breathe
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bCThHXQ3aLLDU3KFST0rC8mTan5.jpg
|
||||
- word: The Avengers
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/hbn46fQaRmlpBuUrEiFqv0GDL6Y.jpg
|
||||
- word: Alice Through the Looking Glass
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/rWlXrfmX1FgcPyj7oQmLfwKRaam.jpg
|
||||
- word: Now You See Me
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/9wbXqcx6rHhoZ9Esp03C7amQzom.jpg
|
||||
- word: The Accountant
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/i9flZtw3BwukADQpu5PlrkwPYSY.jpg
|
||||
- word: The Maze Runner
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/yTbPPmLAn7DiiM0sPYfZduoAjB.jpg
|
||||
- word: Forrest Gump
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/ctOEhQiFIHWkiaYp7b0ibSTe5IL.jpg
|
||||
- word: 'The Hunger Games: Catching Fire'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/wRCPG1lsgfTFkWJ7G3eWgxCgv0C.jpg
|
||||
- word: Warcraft
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/5SX2rgKXZ7NVmAJR5z5LprqSXKa.jpg
|
||||
- word: 'Eddie Izzard: Glorious'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/2XHkh7xLqH168KRqMwDuiTmuyQi.jpg
|
||||
- word: Office Christmas Party
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bzguuhqUI9G8jJ3EBtJ9p12g1Lr.jpg
|
||||
- word: 'Transformers: The Last Knight'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/lQmtMCQgBwcODAyNnKGQrW0Kza8.jpg
|
||||
- word: Skyfall
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/AunH2MIKIbnU9khgFp45eJlydPu.jpg
|
||||
- word: 'The Hobbit: An Unexpected Journey'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/jjAq3tCezdlQduusgtMhpY2XzW0.jpg
|
||||
- word: 'The Lord of the Rings: The Fellowship of the Ring'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/pIUvQ9Ed35wlWhY2oU6OmwEsmzG.jpg
|
||||
- word: Kubo and the Two Strings
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/n4FeRnlH0ERa1kCUh0NXOyQvxnd.jpg
|
||||
- word: 10 Cloverfield Lane
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qEu2EJBQUNFx5mSKOCItwZm74ZE.jpg
|
||||
- word: 'Captain America: The First Avenger'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/pmZtj1FKvQqISS6iQbkiLg5TAsr.jpg
|
||||
- word: The Shawshank Redemption
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/xBKGJQsAIeweesB79KC89FpBrVr.jpg
|
||||
- word: Me Before You
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/o4lxNwKJz8oq3R0kLOIsDlHbDhZ.jpg
|
||||
- word: The Magnificent Seven
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/T3LrH6bnV74llVbFpQsCBrGaU9.jpg
|
||||
- word: The Lion King
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/klI0K4oQMsLhHdjA9Uw8WLugk9v.jpg
|
||||
- word: Quantum of Solace
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/hfZVY8lMiE7HH1cDc2qzSFF6Kbt.jpg
|
||||
- word: Sing
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/srpt7oa3AmmJXd2K5x9ZVzmV0I3.jpg
|
||||
- word: Nightcrawler
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/ts4j3zYaPzdUVF3ijBeBdGVDWjX.jpg
|
||||
- word: Snowden
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qzGFm7uF1HExPUAcAPwC3Hzk5WR.jpg
|
||||
- word: The Equalizer
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/b1uY9m6sZLLfa8jxtBvZg9esSvd.jpg
|
||||
- word: Divergent
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/g6WT9zxATzTy9NVu2xwbxDAxvjd.jpg
|
||||
- word: "Pirates of the Caribbean: Dead Man's Chest"
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/hdHgIcljPHli4xaJGt0INz8Gn3J.jpg
|
||||
- word: War Dogs
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/2cLndRZy8e3das3vVaK3BdJfRIi.jpg
|
||||
- word: Pulp Fiction
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/mte63qJaVnoxkkXbHkdFujBnBgd.jpg
|
||||
- word: 'Transformers: Age of Extinction'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/cHy7nSitAVgvZ7qfCK4JO47t3oZ.jpg
|
||||
- word: Gladiator
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/5vZw7ltCKI0JiOYTtRxaIC3DX0e.jpg
|
||||
- word: Nerve
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/a0wohltYr7Tzkgg2X6QKBe3txj1.jpg
|
||||
- word: I Am Legend
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/u6Qg7TH7Oh1IFWCQSRr4htFFt0A.jpg
|
||||
- word: 'Teenage Mutant Ninja Turtles: Out of the Shadows'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/999RuhZvog8ocyvcccVV9yGmMjL.jpg
|
||||
- word: Cinderella
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/aUYcExsGuRaw7PLGmAmXubt1dfG.jpg
|
||||
- word: The Big Short
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/jmlMLYEsYY1kRc5qHIyTdxCeVmZ.jpg
|
||||
- word: 'X-Men: Days of Future Past'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/5LBcSLHAtEIIgvNkA2dPmYH5wR7.jpg
|
||||
- word: Shutter Island
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/fmLWuAfDPaUa3Vi5nO1YUUyZaX6.jpg
|
||||
- word: 'Captain America: The Winter Soldier'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/4qfXT9BtxeFuamR4F49m2mpKQI1.jpg
|
||||
- word: San Andreas
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/cUfGqafAVQkatQ7N4y08RNV3bgu.jpg
|
||||
- word: The Mummy
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/3qthpSSyBY6Efeu1sqkO8L1Eyyb.jpg
|
||||
- word: Chappie
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/y5lG7TBpeOMG0jxAaTK0ghZSzBJ.jpg
|
||||
- word: Bridge of Spies
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/3amJMLyjx0rDbwhnKNG8d6gzDSV.jpg
|
||||
- word: 'The Lord of the Rings: The Return of the King'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8BPZO0Bf8TeAy8znF43z8soK3ys.jpg
|
||||
- word: 'Kill Bill: Vol. 1'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/kkS8PKa8c134vXsj2fQkNqOaCXU.jpg
|
||||
- word: 'Pirates of the Caribbean: On Stranger Tides'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/l7zANdjgTvYqwZUx76Vk0EKpCH5.jpg
|
||||
- word: The Nice Guys
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/a7eSkK4bkLwKCXYDdYIqLxrqT2n.jpg
|
||||
- word: Harry Potter and the Chamber of Secrets
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/avqzwKn89VetTEvAlBePt3Us6Al.jpg
|
||||
- word: 'The Lord of the Rings: The Two Towers'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/dG4BmM32XJmKiwopLDQmvXEhuHB.jpg
|
||||
- word: Titanic
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/2Te2YJoLtT2cHME7i5kDuEwJWZc.jpg
|
||||
- word: "The Huntsman: Winter's War"
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nQ0UvXdxoMZguLuPj0sdV0U36KR.jpg
|
||||
- word: Thor
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6UxFfo8K3vcihtUpX1ek2ucGeEZ.jpg
|
||||
- word: Taken 3
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/razvUuLkF7CX4XsLyj02ksC0ayy.jpg
|
||||
- word: Lights Out
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nQsdGCVTEq78XwIgR6QUVxiNERI.jpg
|
||||
- word: 'Night at the Museum: Secret of the Tomb'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6tKleiKS54focE4z0sdtLOIEgK8.jpg
|
||||
- word: Up
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/qMjbMPkSCc1K19zuXNM2BgIsIRz.jpg
|
||||
- word: The Bourne Identity
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/2Fr1vqBiDn8xRJM9elcplzHctTN.jpg
|
||||
- word: Frozen
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/cAhCDpAq80QCeQvHytY9JkBalpH.jpg
|
||||
- word: 'Thor: The Dark World'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/3FweBee0xZoY77uO1bhUOlQorNH.jpg
|
||||
- word: The Wolf of Wall Street
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/rP36Rx5RQh0rmH2ynEIaG8DxbV2.jpg
|
||||
- word: Resident Evil
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/s41Er80jGJf3tNkgYHxUCttjmwv.jpg
|
||||
- word: Iron Man 3
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/n9X2DKItL3V0yq1q1jrk8z5UAki.jpg
|
||||
- word: Ice Age
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/oDqbewoFuIEWA7UWurole6MzDGn.jpg
|
||||
- word: Central Intelligence
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/zaGmoSackrRF7w6NieQ0FWY0M7k.jpg
|
||||
- word: 'The Mummy: Tomb of the Dragon Emperor'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/caB8JFUigSHdGsdxOxaK4vZtOiN.jpg
|
||||
- word: The Man from U.N.C.L.E.
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bKxcCNv2xq8M3GD5iSrv9bMGDVa.jpg
|
||||
- word: Gravity
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/9aoWzwOwy9NLuSk9LkBwwrBdPYM.jpg
|
||||
- word: Ex Machina
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/9X3cDZb4GYGQeOnZHLwMcCFz2Ro.jpg
|
||||
- word: Harry Potter and the Goblet of Fire
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/gzKW3emulMxIHzuXxZoyDB1lei9.jpg
|
||||
- word: Man of Steel
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/jYLh4mdOqkt30i7LTFs3o02UcGF.jpg
|
||||
- word: 'Harry Potter and the Deathly Hallows: Part 1'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8YA36faYlkpfp6aozcGsqq68pZ9.jpg
|
||||
- word: Iron Man 2
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/jxdSxqAFrdioKgXwgTs5Qfbazjq.jpg
|
||||
- word: The Angry Birds Movie
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/3mJcfL2lPfRky16EPi95d2YrKqu.jpg
|
||||
- word: Room
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/tBhp8MGaiL3BXpPCSl5xY397sGH.jpg
|
||||
- word: Ted 2
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nkwoiSVJLeK0NI8kTqioBna61bm.jpg
|
||||
- word: 'Exodus: Gods and Kings'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/hOOgtrByGgWfqGTTn5VL7jkLYXJ.jpg
|
||||
- word: 'Terminator 2: Judgment Day'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/d9AqtruwS8nljKjL5aYzM42hQJr.jpg
|
||||
- word: Harry Potter and the Prisoner of Azkaban
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/wWdlIBxn9xCmySxnSWtI2BjZZkF.jpg
|
||||
- word: Genius
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/5eovlgVfijObBm4TtW1QSaj32q3.jpg
|
||||
- word: Inglourious Basterds
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bk0GylJLneaSbpQZXpgTwleYigq.jpg
|
||||
- word: Hacksaw Ridge
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/zBK4QZONMQXhcgaJv1YYTdCW7q9.jpg
|
||||
- word: Trolls
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/wc1JxADaBLuWhySkaawCBTpixCo.jpg
|
||||
- word: The Shining
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/h4DcDCOkQBENWBJZjNlPv3adQfM.jpg
|
||||
- word: A Walk Among the Tombstones
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/e56QsaJy1weAUukiK2ZmIGVUALF.jpg
|
||||
- word: Dr. No
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/bplDiT5JhaXf9S5arO8g5QsFtDi.jpg
|
||||
- word: 'Mission: Impossible'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/7CiZuIPCLvhhMICT2PONuwr2BMG.jpg
|
||||
- word: 'The Purge: Anarchy'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/1sOkQtqmBji7iquGfQlHOrFqplN.jpg
|
||||
- word: 'Maze Runner: The Scorch Trials'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/iapRFMGKvN9tsjqPlN7MIDTCezG.jpg
|
||||
- word: Jupiter Ascending
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/4liSXBZZdURI0c1Id1zLJo6Z3Gu.jpg
|
||||
- word: Morgan
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/g3XhTkjUxLbzVVa63vuopSNNZE8.jpg
|
||||
- word: Se7en
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/ba4CpvnaxvAgff2jHiaqJrVpZJ5.jpg
|
||||
- word: Charlie and the Chocolate Factory
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/mrRAx1OsNVEKJv0ktQprspieqnS.jpg
|
||||
- word: Self/less
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/fpKyGCOZJsYe2TAKLtziLe6EPj9.jpg
|
||||
- word: The Prestige
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/c5o7FN2vzI7xlU6IF1y64mgcH9E.jpg
|
||||
- word: The Departed
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/8Od5zV7Q7zNOX0y9tyNgpTmoiGA.jpg
|
||||
- word: Monsters, Inc.
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/eKBUYeSgGVvztO2MZxD5YMcz6kv.jpg
|
||||
- word: Raiders of the Lost Ark
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/dU1CArBM4YsKLfG8YvhtuTJJaGR.jpg
|
||||
- word: The Terminator
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6yFoLNQgFdVbA8TZMdfgVpszOla.jpg
|
||||
- word: The Mummy Returns
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/22SUPrwoHNbMjZci1kRvBmCqrek.jpg
|
||||
- word: Pan
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6Ym6bgfhvpgQS5Sg8kKnfW1hX7P.jpg
|
||||
- word: Fifty Shades of Grey
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/zw3fM9KYYhYGsIQUJOyQNbeZSnn.jpg
|
||||
- word: Casino Royale
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/xq6hXdBpDPIXWjtmvbFmtLvBFJt.jpg
|
||||
- word: Free State of Jones
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/zgo0s1fmBCWUweNrCVIK1dZEOJ6.jpg
|
||||
- word: Despicable Me
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/yo1ef57MEPkEE4BDZKTZGH9uDcX.jpg
|
||||
- word: Creed
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/nF4kmc4gDRQU4OJiJgk6sZtbJbl.jpg
|
||||
- word: Seventh Son
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/lNnrr7OR7dkqfgIyju8nUJHcf8x.jpg
|
||||
- word: The Hunger Games
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/1LTLrl06uII4w2BTpnQnmWwrKi.jpg
|
||||
- word: Saving Private Ryan
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/gRtLcCQOpYUI9ThdVzi4VUP8QO3.jpg
|
||||
- word: 'Harry Potter and the Deathly Hallows: Part 2'
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6n0DAcyjTHS6888mt8U9ZsLy9nR.jpg
|
||||
- word: 12 Years a Slave
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/xnRPoFI7wzOYviw3PmoG94X2Lnc.jpg
|
||||
- word: Dracula Untold
|
||||
imageUrl: https://image.tmdb.org/t/p/w300_and_h450_bestv2/6UPlIYKxZqUR6Xbpgu1JKG0J7UC.jpg
|
380
src/NadekoBot/data/hangman/things.yml
Normal file
380
src/NadekoBot/data/hangman/things.yml
Normal file
@@ -0,0 +1,380 @@
|
||||
- word: apple
|
||||
imageUrl: https://www.randomlists.com/img/things/apple.jpg.jpg
|
||||
- word: bag
|
||||
imageUrl: https://www.randomlists.com/img/things/bag.jpg.jpg
|
||||
- word: balloon
|
||||
imageUrl: https://www.randomlists.com/img/things/balloon.jpg.jpg
|
||||
- word: bananas
|
||||
imageUrl: https://www.randomlists.com/img/things/bananas.jpg.jpg
|
||||
- word: bed
|
||||
imageUrl: https://www.randomlists.com/img/things/bed.jpg.jpg
|
||||
- word: beef
|
||||
imageUrl: https://www.randomlists.com/img/things/beef.jpg.jpg
|
||||
- word: blouse
|
||||
imageUrl: https://www.randomlists.com/img/things/blouse.jpg.jpg
|
||||
- word: book
|
||||
imageUrl: https://www.randomlists.com/img/things/book.jpg.jpg
|
||||
- word: bookmark
|
||||
imageUrl: https://www.randomlists.com/img/things/bookmark.jpg.jpg
|
||||
- word: boom box
|
||||
imageUrl: https://www.randomlists.com/img/things/boom_box.jpg.jpg
|
||||
- word: bottle
|
||||
imageUrl: https://www.randomlists.com/img/things/bottle.jpg.jpg
|
||||
- word: bottle cap
|
||||
imageUrl: https://www.randomlists.com/img/things/bottle_cap.jpg
|
||||
- word: bow
|
||||
imageUrl: https://www.randomlists.com/img/things/bow.jpg
|
||||
- word: bowl
|
||||
imageUrl: https://www.randomlists.com/img/things/bowl.jpg
|
||||
- word: box
|
||||
imageUrl: https://www.randomlists.com/img/things/box.jpg
|
||||
- word: bracelet
|
||||
imageUrl: https://www.randomlists.com/img/things/bracelet.jpg
|
||||
- word: bread
|
||||
imageUrl: https://www.randomlists.com/img/things/bread.jpg
|
||||
- word: broccoli
|
||||
imageUrl: https://www.randomlists.com/img/things/brocolli.jpg
|
||||
- word: hair brush
|
||||
imageUrl: https://www.randomlists.com/img/things/hair_brush.jpg
|
||||
- word: buckle
|
||||
imageUrl: https://www.randomlists.com/img/things/buckel.jpg
|
||||
- word: button
|
||||
imageUrl: https://www.randomlists.com/img/things/button.jpg
|
||||
- word: camera
|
||||
imageUrl: https://www.randomlists.com/img/things/camera.jpg
|
||||
- word: candle
|
||||
imageUrl: https://www.randomlists.com/img/things/candle.jpg
|
||||
- word: candy wrapper
|
||||
imageUrl: https://www.randomlists.com/img/things/candy_wrapper.jpg
|
||||
- word: canvas
|
||||
imageUrl: https://www.randomlists.com/img/things/canvas.jpg
|
||||
- word: car
|
||||
imageUrl: https://www.randomlists.com/img/things/car.jpg
|
||||
- word: greeting card
|
||||
imageUrl: https://www.randomlists.com/img/things/greeting_card.jpg
|
||||
- word: playing card
|
||||
imageUrl: https://www.randomlists.com/img/things/playing_card.jpg
|
||||
- word: carrots
|
||||
imageUrl: https://www.randomlists.com/img/things/carrots.jpg
|
||||
- word: cat
|
||||
imageUrl: https://www.randomlists.com/img/things/cat.jpg
|
||||
- word: CD
|
||||
imageUrl: https://www.randomlists.com/img/things/CD.jpg
|
||||
- word: cell phone
|
||||
imageUrl: https://www.randomlists.com/img/things/cell_phone.jpg
|
||||
- word: packing peanuts
|
||||
imageUrl: https://www.randomlists.com/img/things/packing_peanuts.jpg
|
||||
- word: cinder block
|
||||
imageUrl: https://www.randomlists.com/img/things/cinder_block.jpg
|
||||
- word: chair
|
||||
imageUrl: https://www.randomlists.com/img/things/chair.jpg
|
||||
- word: chalk
|
||||
imageUrl: https://www.randomlists.com/img/things/chalk.jpg
|
||||
- word: newspaper
|
||||
imageUrl: https://www.randomlists.com/img/things/newspaper.jpg
|
||||
- word: soy sauce packet
|
||||
imageUrl: https://www.randomlists.com/img/things/soy_sauce_packet.jpg
|
||||
- word: chapter book
|
||||
imageUrl: https://www.randomlists.com/img/things/chapter_book.jpg
|
||||
- word: checkbook
|
||||
imageUrl: https://www.randomlists.com/img/things/checkbook.jpg
|
||||
- word: chocolate
|
||||
imageUrl: https://www.randomlists.com/img/things/chocolate.jpg
|
||||
- word: clay pot
|
||||
imageUrl: https://www.randomlists.com/img/things/clay_pot.jpg
|
||||
- word: clock
|
||||
imageUrl: https://www.randomlists.com/img/things/clock.jpg
|
||||
- word: clothes
|
||||
imageUrl: https://www.randomlists.com/img/things/clothes.jpg
|
||||
- word: computer
|
||||
imageUrl: https://www.randomlists.com/img/things/computer.jpg
|
||||
- word: conditioner
|
||||
imageUrl: https://www.randomlists.com/img/things/conditioner.jpg
|
||||
- word: cookie jar
|
||||
imageUrl: https://www.randomlists.com/img/things/cookie_jar.jpg
|
||||
- word: cork
|
||||
imageUrl: https://www.randomlists.com/img/things/cork.jpg
|
||||
- word: couch
|
||||
imageUrl: https://www.randomlists.com/img/things/couch.jpg
|
||||
- word: credit card
|
||||
imageUrl: https://www.randomlists.com/img/things/credit_card.jpg
|
||||
- word: cup
|
||||
imageUrl: https://www.randomlists.com/img/things/cup.jpg
|
||||
- word: deodorant
|
||||
imageUrl: https://www.randomlists.com/img/things/deodorant_.jpg
|
||||
- word: desk
|
||||
imageUrl: https://www.randomlists.com/img/things/desk.jpg
|
||||
- word: door
|
||||
imageUrl: https://www.randomlists.com/img/things/door.jpg
|
||||
- word: drawer
|
||||
imageUrl: https://www.randomlists.com/img/things/drawer.jpg
|
||||
- word: drill press
|
||||
imageUrl: https://www.randomlists.com/img/things/drill_press.jpg
|
||||
- word: eraser
|
||||
imageUrl: https://www.randomlists.com/img/things/earser.jpg
|
||||
- word: eye liner
|
||||
imageUrl: https://www.randomlists.com/img/things/eye_liner.jpg
|
||||
- word: face wash
|
||||
imageUrl: https://www.randomlists.com/img/things/face_wash.jpg
|
||||
- word: fake flowers
|
||||
imageUrl: https://www.randomlists.com/img/things/fake_flowers.jpg
|
||||
- word: flag
|
||||
imageUrl: https://www.randomlists.com/img/things/flag.jpg
|
||||
- word: floor
|
||||
imageUrl: https://www.randomlists.com/img/things/floor.jpg
|
||||
- word: flowers
|
||||
imageUrl: https://www.randomlists.com/img/things/flowers.jpg
|
||||
- word: food
|
||||
imageUrl: https://www.randomlists.com/img/things/food.jpg
|
||||
- word: fork
|
||||
imageUrl: https://www.randomlists.com/img/things/fork.jpg
|
||||
- word: fridge
|
||||
imageUrl: https://www.randomlists.com/img/things/fridge.jpg
|
||||
- word: glass
|
||||
imageUrl: https://www.randomlists.com/img/things/glass.jpg
|
||||
- word: glasses
|
||||
imageUrl: https://www.randomlists.com/img/things/glasses.jpg
|
||||
- word: glow stick
|
||||
imageUrl: https://www.randomlists.com/img/things/glow_stick.jpg
|
||||
- word: grid paper
|
||||
imageUrl: https://www.randomlists.com/img/things/grid_paper.jpg
|
||||
- word: hair tie
|
||||
imageUrl: https://www.randomlists.com/img/things/hair_tie.jpg
|
||||
- word: hanger
|
||||
imageUrl: https://www.randomlists.com/img/things/hanger.jpg
|
||||
- word: helmet
|
||||
imageUrl: https://www.randomlists.com/img/things/helmet.jpg
|
||||
- word: house
|
||||
imageUrl: https://www.randomlists.com/img/things/house.jpg
|
||||
- word: ipod
|
||||
imageUrl: https://www.randomlists.com/img/things/ipod.jpg
|
||||
- word: charger
|
||||
imageUrl: https://www.randomlists.com/img/things/charger.jpg
|
||||
- word: key chain
|
||||
imageUrl: https://www.randomlists.com/img/things/key_chain.jpg
|
||||
- word: keyboard
|
||||
imageUrl: https://www.randomlists.com/img/things/keyboard.jpg
|
||||
- word: keys
|
||||
imageUrl: https://www.randomlists.com/img/things/keys.jpg
|
||||
- word: knife
|
||||
imageUrl: https://www.randomlists.com/img/things/knife.jpg
|
||||
- word: lace
|
||||
imageUrl: https://www.randomlists.com/img/things/lace.jpg
|
||||
- word: lamp
|
||||
imageUrl: https://www.randomlists.com/img/things/lamp.jpg
|
||||
- word: lamp shade
|
||||
imageUrl: https://www.randomlists.com/img/things/lamp_shade.jpg
|
||||
- word: leg warmers
|
||||
imageUrl: https://www.randomlists.com/img/things/leg_warmers.jpg
|
||||
- word: lip gloss
|
||||
imageUrl: https://www.randomlists.com/img/things/lip_gloss.jpg
|
||||
- word: lotion
|
||||
imageUrl: https://www.randomlists.com/img/things/lotion.jpg
|
||||
- word: milk
|
||||
imageUrl: https://www.randomlists.com/img/things/milk.jpg
|
||||
- word: mirror
|
||||
imageUrl: https://www.randomlists.com/img/things/mirror.jpg
|
||||
- word: model car
|
||||
imageUrl: https://www.randomlists.com/img/things/model_car.jpg
|
||||
- word: money
|
||||
imageUrl: https://www.randomlists.com/img/things/money.jpg
|
||||
- word: monitor
|
||||
imageUrl: https://www.randomlists.com/img/things/monitor.jpg
|
||||
- word: mop
|
||||
imageUrl: https://www.randomlists.com/img/things/mop.jpg
|
||||
- word: mouse pad
|
||||
imageUrl: https://www.randomlists.com/img/things/mouse_pad.jpg
|
||||
- word: mp3 player
|
||||
imageUrl: https://www.randomlists.com/img/things/mp3_player.jpg
|
||||
- word: nail clippers
|
||||
imageUrl: https://www.randomlists.com/img/things/nail_clippers.jpg
|
||||
- word: nail file
|
||||
imageUrl: https://www.randomlists.com/img/things/nail_file.jpg
|
||||
- word: needle
|
||||
imageUrl: https://www.randomlists.com/img/things/needle.jpg
|
||||
- word: outlet
|
||||
imageUrl: https://www.randomlists.com/img/things/outlet.jpg
|
||||
- word: paint brush
|
||||
imageUrl: https://www.randomlists.com/img/things/paint_brush.jpg
|
||||
- word: pants
|
||||
imageUrl: https://www.randomlists.com/img/things/pants.jpg
|
||||
- word: paper
|
||||
imageUrl: https://www.randomlists.com/img/things/paper.jpg
|
||||
- word: pen
|
||||
imageUrl: https://www.randomlists.com/img/things/pen.jpg
|
||||
- word: pencil
|
||||
imageUrl: https://www.randomlists.com/img/things/pencil.jpg
|
||||
- word: perfume
|
||||
imageUrl: https://www.randomlists.com/img/things/perfume.jpg
|
||||
- word: phone
|
||||
imageUrl: https://www.randomlists.com/img/things/phone.jpg
|
||||
- word: photo album
|
||||
imageUrl: https://www.randomlists.com/img/things/photo_album.jpg
|
||||
- word: picture frame
|
||||
imageUrl: https://www.randomlists.com/img/things/picture_frame.jpg
|
||||
- word: pillow
|
||||
imageUrl: https://www.randomlists.com/img/things/pillow.jpg
|
||||
- word: plastic fork
|
||||
imageUrl: https://www.randomlists.com/img/things/plastic_fork.jpg
|
||||
- word: plate
|
||||
imageUrl: https://www.randomlists.com/img/things/plate.jpg
|
||||
- word: pool stick
|
||||
imageUrl: https://www.randomlists.com/img/things/pool_stick.jpg
|
||||
- word: soda can
|
||||
imageUrl: https://www.randomlists.com/img/things/soda_can.jpg
|
||||
- word: puddle
|
||||
imageUrl: https://www.randomlists.com/img/things/puddle.jpg
|
||||
- word: purse
|
||||
imageUrl: https://www.randomlists.com/img/things/purse.jpg
|
||||
- word: blanket
|
||||
imageUrl: https://www.randomlists.com/img/things/blanket.jpg
|
||||
- word: radio
|
||||
imageUrl: https://www.randomlists.com/img/things/radio.jpg
|
||||
- word: remote
|
||||
imageUrl: https://www.randomlists.com/img/things/remote.jpg
|
||||
- word: ring
|
||||
imageUrl: https://www.randomlists.com/img/things/ring.jpg
|
||||
- word: rubber band
|
||||
imageUrl: https://www.randomlists.com/img/things/rubber_band.jpg
|
||||
- word: rubber duck
|
||||
imageUrl: https://www.randomlists.com/img/things/rubber_duck.jpg
|
||||
- word: rug
|
||||
imageUrl: https://www.randomlists.com/img/things/rug.jpg
|
||||
- word: rusty nail
|
||||
imageUrl: https://www.randomlists.com/img/things/rusty_nail.jpg
|
||||
- word: sailboat
|
||||
imageUrl: https://www.randomlists.com/img/things/sailboat.jpg
|
||||
- word: sand paper
|
||||
imageUrl: https://www.randomlists.com/img/things/sand_paper.jpg
|
||||
- word: sandal
|
||||
imageUrl: https://www.randomlists.com/img/things/sandal.jpg
|
||||
- word: scotch tape
|
||||
imageUrl: https://www.randomlists.com/img/things/scotch_tape.jpg
|
||||
- word: screw
|
||||
imageUrl: https://www.randomlists.com/img/things/screw.jpg
|
||||
- word: seat belt
|
||||
imageUrl: https://www.randomlists.com/img/things/seat_belt.jpg
|
||||
- word: shampoo
|
||||
imageUrl: https://www.randomlists.com/img/things/shampoo.jpg
|
||||
- word: sharpie
|
||||
imageUrl: https://www.randomlists.com/img/things/sharpie.jpg
|
||||
- word: shawl
|
||||
imageUrl: https://www.randomlists.com/img/things/shawl.jpg
|
||||
- word: shirt
|
||||
imageUrl: https://www.randomlists.com/img/things/shirt.jpg
|
||||
- word: shoe lace
|
||||
imageUrl: https://www.randomlists.com/img/things/shoe_lace.jpg
|
||||
- word: shoes
|
||||
imageUrl: https://www.randomlists.com/img/things/shoes.jpg
|
||||
- word: shovel
|
||||
imageUrl: https://www.randomlists.com/img/things/shovel.jpg
|
||||
- word: sidewalk
|
||||
imageUrl: https://www.randomlists.com/img/things/sidewalk.jpg
|
||||
- word: sketch pad
|
||||
imageUrl: https://www.randomlists.com/img/things/sketch_pad.jpg
|
||||
- word: slipper
|
||||
imageUrl: https://www.randomlists.com/img/things/slipper.jpg
|
||||
- word: soap
|
||||
imageUrl: https://www.randomlists.com/img/things/soap.jpg
|
||||
- word: socks
|
||||
imageUrl: https://www.randomlists.com/img/things/socks.jpg
|
||||
- word: sofa
|
||||
imageUrl: https://www.randomlists.com/img/things/sofa.jpg
|
||||
- word: speakers
|
||||
imageUrl: https://www.randomlists.com/img/things/speakers.jpg
|
||||
- word: sponge
|
||||
imageUrl: https://www.randomlists.com/img/things/sponge.jpg
|
||||
- word: spoon
|
||||
imageUrl: https://www.randomlists.com/img/things/spoon.jpg
|
||||
- word: spring
|
||||
imageUrl: https://www.randomlists.com/img/things/spring.jpg
|
||||
- word: sticky note
|
||||
imageUrl: https://www.randomlists.com/img/things/sticky_note.jpg
|
||||
- word: stockings
|
||||
imageUrl: https://www.randomlists.com/img/things/stockings.jpg
|
||||
- word: stop sign
|
||||
imageUrl: https://www.randomlists.com/img/things/stop_sign.jpg
|
||||
- word: street lights
|
||||
imageUrl: https://www.randomlists.com/img/things/street_lights.jpg
|
||||
- word: sun glasses
|
||||
imageUrl: https://www.randomlists.com/img/things/sun_glasses.jpg
|
||||
- word: table
|
||||
imageUrl: https://www.randomlists.com/img/things/table.jpg
|
||||
- word: teddies
|
||||
imageUrl: https://www.randomlists.com/img/things/teddies.jpg
|
||||
- word: television
|
||||
imageUrl: https://www.randomlists.com/img/things/television.jpg
|
||||
- word: thermometer
|
||||
imageUrl: https://www.randomlists.com/img/things/thermometer.jpg
|
||||
- word: thread
|
||||
imageUrl: https://www.randomlists.com/img/things/thread.jpg
|
||||
- word: tire swing
|
||||
imageUrl: https://www.randomlists.com/img/things/tire_swing.jpg
|
||||
- word: tissue box
|
||||
imageUrl: https://www.randomlists.com/img/things/tissue_box.jpg
|
||||
- word: toe ring
|
||||
imageUrl: https://www.randomlists.com/img/things/toe_ring.jpg
|
||||
- word: toilet
|
||||
imageUrl: https://www.randomlists.com/img/things/toilet.jpg
|
||||
- word: tomato
|
||||
imageUrl: https://www.randomlists.com/img/things/tomato.jpg
|
||||
- word: tooth picks
|
||||
imageUrl: https://www.randomlists.com/img/things/tooth_picks.jpg
|
||||
- word: toothbrush
|
||||
imageUrl: https://www.randomlists.com/img/things/toothbrush.jpg
|
||||
- word: toothpaste
|
||||
imageUrl: https://www.randomlists.com/img/things/toothpaste.jpg
|
||||
- word: towel
|
||||
imageUrl: https://www.randomlists.com/img/things/towel.jpg
|
||||
- word: tree
|
||||
imageUrl: https://www.randomlists.com/img/things/tree.jpg
|
||||
- word: truck
|
||||
imageUrl: https://www.randomlists.com/img/things/truck.jpg
|
||||
- word: tv
|
||||
imageUrl: https://www.randomlists.com/img/things/tv.jpg
|
||||
- word: tweezers
|
||||
imageUrl: https://www.randomlists.com/img/things/twezzers.jpg
|
||||
- word: twister
|
||||
imageUrl: https://www.randomlists.com/img/things/twister.jpg
|
||||
- word: vase
|
||||
imageUrl: https://www.randomlists.com/img/things/vase.jpg
|
||||
- word: video games
|
||||
imageUrl: https://www.randomlists.com/img/things/video_games.jpg
|
||||
- word: wallet
|
||||
imageUrl: https://www.randomlists.com/img/things/wallet.jpg
|
||||
- word: washing machine
|
||||
imageUrl: https://www.randomlists.com/img/things/washing_machine.jpg
|
||||
- word: watch
|
||||
imageUrl: https://www.randomlists.com/img/things/watch.jpg
|
||||
- word: water bottle
|
||||
imageUrl: https://www.randomlists.com/img/things/water_bottle.jpg
|
||||
- word: doll
|
||||
imageUrl: https://www.randomlists.com/img/things/doll.jpg
|
||||
- word: magnet
|
||||
imageUrl: https://www.randomlists.com/img/things/magnet.jpg
|
||||
- word: wagon
|
||||
imageUrl: https://www.randomlists.com/img/things/wagon.jpg
|
||||
- word: headphones
|
||||
imageUrl: https://www.randomlists.com/img/things/headphones.jpg
|
||||
- word: clamp
|
||||
imageUrl: https://www.randomlists.com/img/things/clamp.jpg
|
||||
- word: USB drive
|
||||
imageUrl: https://www.randomlists.com/img/things/USB_drive.jpg
|
||||
- word: air freshener
|
||||
imageUrl: https://www.randomlists.com/img/things/air_freshener.jpg
|
||||
- word: piano
|
||||
imageUrl: https://www.randomlists.com/img/things/piano.jpg
|
||||
- word: ice cube tray
|
||||
imageUrl: https://www.randomlists.com/img/things/ice_cube_tray.jpg
|
||||
- word: white out
|
||||
imageUrl: https://www.randomlists.com/img/things/white_out.jpg
|
||||
- word: window
|
||||
imageUrl: https://www.randomlists.com/img/things/window.jpg
|
||||
- word: controller
|
||||
imageUrl: https://www.randomlists.com/img/things/controller.jpg
|
||||
- word: coasters
|
||||
imageUrl: https://www.randomlists.com/img/things/coasters.jpg
|
||||
- word: thermostat
|
||||
imageUrl: https://www.randomlists.com/img/things/thermostat.jpg
|
||||
- word: zipper
|
||||
imageUrl: https://www.randomlists.com/img/things/zipper.jpg
|
@@ -100,9 +100,11 @@ logserver:
|
||||
- "enable"
|
||||
- "disable"
|
||||
logignore:
|
||||
desc: "Toggles whether the `{0}logserver` command ignores this channel. Useful if you have hidden admin channel and public log channel."
|
||||
desc: "Toggles whether the `{0}logserver` command ignores the specified channel or user. Provide no arguments to see the list of currently ignored users and channels"
|
||||
args:
|
||||
- ""
|
||||
- "@SomeUser"
|
||||
- "#some-channel"
|
||||
repeatlist:
|
||||
desc: "Shows currently repeating messages and their indexes."
|
||||
args:
|
||||
@@ -900,6 +902,10 @@ streamadd:
|
||||
desc: "Notifies this channel when the stream on the specified URL goes online or offline. Offline notifications will only show if you enable `{0}streamoff`. Maximum 10 per server."
|
||||
args:
|
||||
- "twitch.tv/someguy"
|
||||
streamsclear:
|
||||
desc: "Removes all followed streams on this server."
|
||||
args:
|
||||
- ""
|
||||
streamremove:
|
||||
desc: "Stops following the stream on the specified index. (use `{0}stl` to see indexes)"
|
||||
args:
|
||||
@@ -1319,11 +1325,11 @@ magicthegathering:
|
||||
args:
|
||||
- "about face"
|
||||
hangmanlist:
|
||||
desc: "Shows a list of hangman term types."
|
||||
desc: "Shows a list of hangman question categories."
|
||||
args:
|
||||
- ""
|
||||
hangman:
|
||||
desc: "Starts a game of hangman in the channel. Use `{0}hangmanlist` to see a list of available term types. Defaults to 'all'."
|
||||
desc: "Starts a game of hangman in the channel. You can optionally select a category `{0}hangmanlist` to see a list of available categories."
|
||||
args:
|
||||
- ""
|
||||
- "movies"
|
||||
@@ -1431,7 +1437,10 @@ waifutransfer:
|
||||
args:
|
||||
- "@ExWaifu @NewOwner"
|
||||
waifugift:
|
||||
desc: "Gift an item to someone. This will increase their waifu value by 50% of the gifted item's value if they are not your waifu, or 95% if they are. Provide no parameters to see a list of items that you can gift."
|
||||
desc: -|
|
||||
Gift an item to someone. This will increase their waifu value by a percentage of the gift's value.
|
||||
Negative gifts will not show up in waifuinfo.
|
||||
Provide no parameters to see a list of items that you can gift.
|
||||
args:
|
||||
- ""
|
||||
- "Rose @Himesama"
|
||||
|
@@ -94,8 +94,12 @@
|
||||
"log_all": "Logging all events in this channel.",
|
||||
"log_disabled": "Logging disabled.",
|
||||
"log_events": "Log events you can subscribe to:",
|
||||
"log_ignore": "Logging will ignore {0}",
|
||||
"log_not_ignore": "Logging will not ignore {0}",
|
||||
"log_ignored_channels": "Ignored Channels",
|
||||
"log_ignored_users": "Ignored Users",
|
||||
"log_ignore_user": "Logging will ignore user {0}",
|
||||
"log_not_ignore_user": "Logging will no longer ignore user {0}",
|
||||
"log_ignore_chan": "Logging will ignore channel {0}",
|
||||
"log_not_ignore_chan": "Logging will no longer ignore channel {0}",
|
||||
"log_stop": "Stopped logging {0} event.",
|
||||
"message_sent": "Message sent.",
|
||||
"msg_not_found": "Message not found.",
|
||||
@@ -463,8 +467,8 @@
|
||||
"api_key_missing": "Api key missing.",
|
||||
"invalid_input": "Invalid input.",
|
||||
"not_found": "Not found.",
|
||||
"failed_finding_anime": "Failed finding that animu.",
|
||||
"failed_finding_manga": "Failed finding that mango.",
|
||||
"failed_finding_anime": "Failed finding that anime.",
|
||||
"failed_finding_manga": "Failed finding that manga.",
|
||||
"genres": "Genres",
|
||||
"authors": "Authors",
|
||||
"height_weight": "Height/Weight",
|
||||
@@ -503,6 +507,7 @@
|
||||
"streamer_online": "Streamer {0} is online with {1} viewers.",
|
||||
"streams_follow_title": "Streams you're following",
|
||||
"streams_none": "You are not following any streams on this server.",
|
||||
"streams_cleared": "All streams followed on this server have been removed.",
|
||||
"stream_no": "No such stream.",
|
||||
"stream_off_enabled": "Stream notifications will now show when a stream goes offline.",
|
||||
"stream_off_disabled": "Stream notifications will no longer show when a stream goes offline.",
|
||||
|
Reference in New Issue
Block a user