iter
0post
2025.12.16 19:00
:0% :0% ( 20代 / 女性 )
人気のポスト ※表示されているRP数は特定時点のものです
- ̗̀📣ngro絵描き字書き合コンsample27
ランダムに割り当てた絵描き×字書きによる #天才はBOSSに一途2 本部企画!展示する作品サンプルを1日1ペアずつご紹介します✨
🖤 27ペア目 💜
【絵】あじこ様 #oya000b
【字】ののづかゴリラ様 #gorilla0writer
「突然悪魔が舞い降りた。」
#ngro合コン企画サンプル2
全27組です!当日をお楽しみに♡ December 12, 2025
4RP
🎄✨ Happy Holidays! ✨🎄
今年も残りわずかとなりましたね📆
📢 ITER職員応募支援チームからのお知らせ ❗
12月27日(土)~1月4日(日)まで、窓口はお休みとなります🙇♀️
年内の応募書類添削受付は12月23日(火)正午まで📥
今年もありがとうございました😊
皆様、よいお年をお迎えください❗☃❄ https://t.co/bedggPheva December 12, 2025
【集計 Discord BOT 完全無料ガイド】
Discord BOT作成
https://t.co/UkeM8Oj8OY へ
New Application → 名前入力 → Create
Bot → Add Bot → Reset Token → トークンコピー(超大事!)
Privileged Gateway Intents → Message Content Intent ON
OAuth2 → URL GeneratorScopes: bot
Permissions: Send Messages / Embed Links / Attach Files / Read Message History
生成URLで自分のサーバーにBOT招待!
2. Replitで無料常時稼働
https://t.co/K3N2Z2LWRN 無料登録
Create → Python → タイトル「apex-bot」など
Secrets(鍵アイコン)→ Key: DISCORD_TOKEN / Value: トークン貼り付け → Add
3. コード全部コピペ(https://t.co/COyPmSIC64に貼り替えてRun!)
ーーー
import discord
from discord.ext import commands
import pandas as pd
import json
import os
import requests
from PIL import Image, ImageDraw, ImageFont
import io
from datetime import datetime
intents = discord.Intents.default()
intents.message_content = True
bot = https://t.co/JVJCVDj2Lf(command_prefix='!', intents=intents)
PLACEMENT_POINTS = {1:12, 2:9, 3:7, 4:5, 5:4, 6:3, 7:3, 8:2, 9:2, 10:2, 11:1, 12:1, 13:1, 14:1, 15:1, 16:0, 17:0, 18:0, 19:0, 20:0}
CONFIG_FILE = 'config.json'
DATA_FILE = 'data.json'
def load_json(f): return json.load(open(f, 'r', encoding='utf-8')) if os.path.exists(f) else {'teams': {}, 'team_map': {}}
def save_json(f, d): json.dump(d, open(f, 'w', encoding='utf-8'), indent=4, ensure_ascii=False)
config = load_json(CONFIG_FILE)
data = load_json(DATA_FILE)
@bot.event
async def on_ready():
print(f'{bot.user} 起動完了!')
@bot.command()
async def config(ctx, key: str, value: str):
config[key] = value
save_json(CONFIG_FILE, config)
await ctx.send(f"✅ {key}={value} 設定OK!")
@bot.command()
async def addteam(ctx, *, team_name: str):
if team_name in data['teams']:
await ctx.send("❌ 既に存在")
return
data['teams'][team_name] = {'matches': []}
save_json(DATA_FILE, data)
await ctx.send(f"✅ 「{team_name}」追加!({len(data['teams'])}チーム)")
@bot.command()
async def submit(ctx, team_name: str, rank: int, kills: int):
if not https://t.co/R33rBK9kJS.guild_permissions.administrator:
await ctx.send("❌ 運営専用(管理者ロール)")
return
if team_name not in data['teams']:
await ctx.send("❌ !addteam で追加")
return
cap = int(config.get('kill_cap', 12))
pts = PLACEMENT_POINTS.get(rank, 0) + min(kills, cap)
data['teams'][team_name]['matches'].append({'rank': rank, 'kills': kills, 'pts': pts})
save_json(DATA_FILE, data)
await ctx.send(f"✅ 「{team_name}」: {rank}位 {kills}K → {pts}pt (上限{cap})")
@bot.command()
async def fetch(ctx):
token = config.get('token')
if not token:
await ctx.send("❌ Token未設定! !config token=XXXX")
return
try:
url = f"https://t.co/00h2pwFBKs{token}"
resp = requests.get(url).json()
participants = resp.get('lobbies', [{}])[0].get('participants', [])
cap = int(config.get('kill_cap', 12))
team_map = data.get('team_map', {})
added = 0
for p in participants:
player = p.get('name', '').lower()
team = None
for k, v in team_map.items():
if k.lower() in player or player in k.lower():
team = v
break
if team and team in data['teams']:
rank = p.get('placement', 20)
kills = p.get('kills', 0)
pts = PLACEMENT_POINTS.get(rank, 0) + min(kills, cap)
data['teams'][team]['matches'].append({'rank': rank, 'kills': kills, 'pts': pts})
added += 1
save_json(DATA_FILE, data)
await ctx.send(f"✅ {added}人自動登録! !collect で確認")
except Exception as e:
await ctx.send(f"❌ エラー: {e}")
@bot.command()
async def reset(ctx):
if not https://t.co/R33rBK9kJS.guild_permissions.administrator: return
global data
data = {'teams': {}, 'team_map': {}}
save_json(DATA_FILE, data)
await ctx.send("✅ リセット完了!")
@bot.command()
async def collect(ctx):
if not data['teams']:
await ctx.send("❌ チームなし!")
return
df_data = []
for team, info in data['teams'].items():
m = info['matches']
if m:
df_data.append({'team': team, 'pts': sum(x['pts'] for x in m), 'kills': sum(x['kills'] for x in m), 'matches': len(m), 'best': min(x['rank'] for x in m)})
df = pd.DataFrame(df_data).sort_values(['pts', 'kills', 'best'], ascending=[False, False, True]).reset_index(drop=True)
embed = discord.Embed(title="🔥 ALGSチーム集計", color=0xff6600)
embed.add_field(name="リーダーボード", value=https://t.co/lemnvabf6e_string(index=False), inline=False)
await ctx.send(embed=embed)
img = await generate_leaderboard(df)
await ctx.send(file=discord.File(io.BytesIO(img), 'leaderboard.png'))
async def generate_leaderboard(df):
text_color = config.get('text_color', 'white')
title_color = config.get('title_color', 'white')
sub_color = config.get('sub_color', 'yellow')
rank1_color = config.get('rank1_color', '#FFD700')
rank2_color = config.get('rank2_color', '#C0C0C0')
rank3_color = config.get('rank3_color', '#CD7F32')
bg_url = config.get('bg_url')
bg_color = tuple(int((config.get('bg_color', '#141426').lstrip('#')[i:i+2]), 16) for i in (0,2,4)) + (255,)
if bg_url:
try:
bg = https://t.co/wnJw0gyTeb(io.BytesIO(requests.get(bg_url).content)).resize((1920,1080)).convert('RGBA')
except:
bg = https://t.co/ovcsElsYoY('RGBA', (1920,1080), bg_color)
else:
bg = https://t.co/ovcsElsYoY('RGBA', (1920,1080), bg_color)
img = Image.alpha_composite(bg, https://t.co/ovcsElsYoY('RGBA', (1920,1080), (0,0,0,0)))
draw = ImageDraw.Draw(img)
try:
font_title = ImageFont.truetype("arial.ttf", 80)
font_sub = ImageFont.truetype("arial.ttf", 50)
font_row = ImageFont.truetype("arial.ttf", 45)
font_rank = ImageFont.truetype("arial.ttf", 55)
except:
font_title = font_sub = font_row = font_rank = ImageFont.load_default()
draw.text((100,60), "ALGS準拠 カスタム集計リーダーボード", fill=title_color, font=font_title)
draw.text((100,180), f"キル上限: {config.get('kill_cap',12)} | 自動: {'ON' if config.get('token') else 'OFF'}", fill=sub_color, font=font_sub)
y = 300
for i, row in df.head(20).iterrows():
rank_idx = i + 1
if rank_idx == 1: rank_text, rank_fill = "🥇 1位", rank1_color
elif rank_idx == 2: rank_text, rank_fill = "🥈 2位", rank2_color
elif rank_idx == 3: rank_text, rank_fill = "🥉 3位", rank3_color
else: rank_text, rank_fill = f"{rank_idx}位", text_color
line = f"{row['team'][:22].ljust(24)}総Pts: {row['pts']} 総K: {row['kills']} ({row['matches']}試合)"
draw.text((100, y), rank_text, fill=rank_fill, font=font_rank)
draw.text((220, y), line, fill=text_color, font=font_row)
y += 60
draw.text((100,1020), f"集計: {https://t.co/Dwomd35XtW().strftime('%Y/%m/%d %H:%M')}", fill='lightgray', font=font_sub)
buf = io.BytesIO()
img.convert('RGB').save(buf, 'PNG')
https://t.co/RdXBdDvKxx(0)
return buf.getvalue()
https://t.co/T0NWyqdLnY(os.getenv('DISCORD_TOKEN'))
ーーー
使い方
!config kill_cap 15 → キル上限(各試合ごとに変更OK!)
!config bg_url https://画像URL → 背景
!config text_color #ff0000 → 文字色など
手入力モード
!addteam チーム名 で全チーム追加
試合ごとに !config kill_cap X → !submit チーム名 順位 総キル(全チーム分)
!collect でテーブル+画像投稿
次試合前 !reset
自動モード(Tokenあり)
カスタム作成後Stats Token → !config token=トークン
!config team_map プレイヤー名:チーム名(複数configで追加)
試合ごとに !config kill_cap X → !fetch(自動登録)
!collect で集計 December 12, 2025
【APEX集計 Discord BOT 完全無料作成ガイド】
Discord BOT作成
https://t.co/UkeM8Oj8OY へ
New Application → 名前入力 → Create
Bot → Add Bot → Reset Token → トークンコピー(超大事!)
Privileged Gateway Intents → Message Content Intent ON
OAuth2 → URL GeneratorScopes: bot
Permissions: Send Messages / Embed Links / Attach Files / Read Message History
生成URLで自分のサーバーにBOT招待!
2. Replitで無料常時稼働
https://t.co/K3N2Z2LWRN 無料登録
Create → Python → タイトル「apex-bot」など
Secrets(鍵アイコン)→ Key: DISCORD_TOKEN / Value: トークン貼り付け → Add
3. コード全部コピペ(https://t.co/COyPmSIC64に貼り替えてRun!)
ーーー
import discord
from discord.ext import commands
import pandas as pd
import json
import os
import requests
from PIL import Image, ImageDraw, ImageFont
import io
from datetime import datetime
intents = discord.Intents.default()
intents.message_content = True
bot = https://t.co/JVJCVDj2Lf(command_prefix='!', intents=intents)
PLACEMENT_POINTS = {1:12, 2:9, 3:7, 4:5, 5:4, 6:3, 7:3, 8:2, 9:2, 10:2, 11:1, 12:1, 13:1, 14:1, 15:1, 16:0, 17:0, 18:0, 19:0, 20:0}
CONFIG_FILE = 'config.json'
DATA_FILE = 'data.json'
def load_json(f): return json.load(open(f, 'r', encoding='utf-8')) if os.path.exists(f) else {'teams': {}, 'team_map': {}}
def save_json(f, d): json.dump(d, open(f, 'w', encoding='utf-8'), indent=4, ensure_ascii=False)
config = load_json(CONFIG_FILE)
data = load_json(DATA_FILE)
@bot.event
async def on_ready():
print(f'{bot.user} 起動完了!')
@bot.command()
async def config(ctx, key: str, value: str):
config[key] = value
save_json(CONFIG_FILE, config)
await ctx.send(f"✅ {key}={value} 設定OK!")
@bot.command()
async def addteam(ctx, *, team_name: str):
if team_name in data['teams']:
await ctx.send("❌ 既に存在")
return
data['teams'][team_name] = {'matches': []}
save_json(DATA_FILE, data)
await ctx.send(f"✅ 「{team_name}」追加!({len(data['teams'])}チーム)")
@bot.command()
async def submit(ctx, team_name: str, rank: int, kills: int):
if not https://t.co/R33rBK9kJS.guild_permissions.administrator:
await ctx.send("❌ 運営専用(管理者ロール)")
return
if team_name not in data['teams']:
await ctx.send("❌ !addteam で追加")
return
cap = int(config.get('kill_cap', 12))
pts = PLACEMENT_POINTS.get(rank, 0) + min(kills, cap)
data['teams'][team_name]['matches'].append({'rank': rank, 'kills': kills, 'pts': pts})
save_json(DATA_FILE, data)
await ctx.send(f"✅ 「{team_name}」: {rank}位 {kills}K → {pts}pt (上限{cap})")
@bot.command()
async def fetch(ctx):
token = config.get('token')
if not token:
await ctx.send("❌ Token未設定! !config token=XXXX")
return
try:
url = f"https://t.co/00h2pwFBKs{token}"
resp = requests.get(url).json()
participants = resp.get('lobbies', [{}])[0].get('participants', [])
cap = int(config.get('kill_cap', 12))
team_map = data.get('team_map', {})
added = 0
for p in participants:
player = p.get('name', '').lower()
team = None
for k, v in team_map.items():
if k.lower() in player or player in k.lower():
team = v
break
if team and team in data['teams']:
rank = p.get('placement', 20)
kills = p.get('kills', 0)
pts = PLACEMENT_POINTS.get(rank, 0) + min(kills, cap)
data['teams'][team]['matches'].append({'rank': rank, 'kills': kills, 'pts': pts})
added += 1
save_json(DATA_FILE, data)
await ctx.send(f"✅ {added}人自動登録! !collect で確認")
except Exception as e:
await ctx.send(f"❌ エラー: {e}")
@bot.command()
async def reset(ctx):
if not https://t.co/R33rBK9kJS.guild_permissions.administrator: return
global data
data = {'teams': {}, 'team_map': {}}
save_json(DATA_FILE, data)
await ctx.send("✅ リセット完了!")
@bot.command()
async def collect(ctx):
if not data['teams']:
await ctx.send("❌ チームなし!")
return
df_data = []
for team, info in data['teams'].items():
m = info['matches']
if m:
df_data.append({'team': team, 'pts': sum(x['pts'] for x in m), 'kills': sum(x['kills'] for x in m), 'matches': len(m), 'best': min(x['rank'] for x in m)})
df = pd.DataFrame(df_data).sort_values(['pts', 'kills', 'best'], ascending=[False, False, True]).reset_index(drop=True)
embed = discord.Embed(title="🔥 ALGSチーム集計", color=0xff6600)
embed.add_field(name="リーダーボード", value=https://t.co/lemnvabf6e_string(index=False), inline=False)
await ctx.send(embed=embed)
img = await generate_leaderboard(df)
await ctx.send(file=discord.File(io.BytesIO(img), 'leaderboard.png'))
async def generate_leaderboard(df):
text_color = config.get('text_color', 'white')
title_color = config.get('title_color', 'white')
sub_color = config.get('sub_color', 'yellow')
rank1_color = config.get('rank1_color', '#FFD700')
rank2_color = config.get('rank2_color', '#C0C0C0')
rank3_color = config.get('rank3_color', '#CD7F32')
bg_url = config.get('bg_url')
bg_color = tuple(int((config.get('bg_color', '#141426').lstrip('#')[i:i+2]), 16) for i in (0,2,4)) + (255,)
if bg_url:
try:
bg = https://t.co/wnJw0gyTeb(io.BytesIO(requests.get(bg_url).content)).resize((1920,1080)).convert('RGBA')
except:
bg = https://t.co/ovcsElsYoY('RGBA', (1920,1080), bg_color)
else:
bg = https://t.co/ovcsElsYoY('RGBA', (1920,1080), bg_color)
img = Image.alpha_composite(bg, https://t.co/ovcsElsYoY('RGBA', (1920,1080), (0,0,0,0)))
draw = ImageDraw.Draw(img)
try:
font_title = ImageFont.truetype("arial.ttf", 80)
font_sub = ImageFont.truetype("arial.ttf", 50)
font_row = ImageFont.truetype("arial.ttf", 45)
font_rank = ImageFont.truetype("arial.ttf", 55)
except:
font_title = font_sub = font_row = font_rank = ImageFont.load_default()
draw.text((100,60), "ALGS準拠 カスタム集計リーダーボード", fill=title_color, font=font_title)
draw.text((100,180), f"キル上限: {config.get('kill_cap',12)} | 自動: {'ON' if config.get('token') else 'OFF'}", fill=sub_color, font=font_sub)
y = 300
for i, row in df.head(20).iterrows():
rank_idx = i + 1
if rank_idx == 1: rank_text, rank_fill = "🥇 1位", rank1_color
elif rank_idx == 2: rank_text, rank_fill = "🥈 2位", rank2_color
elif rank_idx == 3: rank_text, rank_fill = "🥉 3位", rank3_color
else: rank_text, rank_fill = f"{rank_idx}位", text_color
line = f"{row['team'][:22].ljust(24)}総Pts: {row['pts']} 総K: {row['kills']} ({row['matches']}試合)"
draw.text((100, y), rank_text, fill=rank_fill, font=font_rank)
draw.text((220, y), line, fill=text_color, font=font_row)
y += 60
draw.text((100,1020), f"集計: {https://t.co/Dwomd35XtW().strftime('%Y/%m/%d %H:%M')}", fill='lightgray', font=font_sub)
buf = io.BytesIO()
img.convert('RGB').save(buf, 'PNG')
https://t.co/RdXBdDvKxx(0)
return buf.getvalue()
https://t.co/T0NWyqdLnY(os.getenv('DISCORD_TOKEN'))
ーーー
使い方
!config kill_cap 15 → キル上限(各試合ごとに変更OK!)
!config bg_url https://画像URL → 背景
!config text_color #ff0000 → 文字色など
手入力モード
!addteam チーム名 で全チーム追加
試合ごとに !config kill_cap X → !submit チーム名 順位 総キル(全チーム分)
!collect でテーブル+画像投稿
次試合前 !reset
自動モード(Tokenあり)
カスタム作成後Stats Token → !config token=トークン
!config team_map プレイヤー名:チーム名(複数configで追加)
試合ごとに !config kill_cap X → !fetch(自動登録)
!collect で集計 December 12, 2025
葛葉のふもコレキーボード出てるよー!JISで磁軸って最高じゃん、欲しいけど財布が泣いてる😂
にじさんじ × ふもコレ キーボード 葛葉 Arbiter studio(新品)
https://t.co/i8JDKa5LlC December 12, 2025
やっぱりアニメイラストだと情報量少なくて子供っぽさというかチープさみたいなのを感じちゃう
arbiter のチェンソーマンコラボくらいかっけぇの見ちゃうと余計に https://t.co/OJBDWNAvx1 December 12, 2025
<ポストの表示について>
本サイトではXの利用規約に沿ってポストを表示させていただいております。ポストの非表示を希望される方はこちらのお問い合わせフォームまでご連絡下さい。こちらのデータはAPIでも販売しております。









