1. 클라우드 DB 복구 요청
2. 평소에 DB을 나누어서 복구가 가능한 시스템 구축이 필요 (RAID 같은 구성연구)
3. 가끔적 DB을 사용하지 않도록 구성
4. 유저데이터는 클라이언트에도 저장했다가 복구 할수 있는 시스템 연구
5. 개인적인 게임 서비스 구축시 게임 자체는 혼자서도 구동되는거나 서버까지 제공할수 있도록 구성하고 외부 서비스이용은 최소로 해서 서비스 단종시에도 문제없도록 구축할것
1. 클라우드 DB 복구 요청
2. 평소에 DB을 나누어서 복구가 가능한 시스템 구축이 필요 (RAID 같은 구성연구)
3. 가끔적 DB을 사용하지 않도록 구성
4. 유저데이터는 클라이언트에도 저장했다가 복구 할수 있는 시스템 연구
5. 개인적인 게임 서비스 구축시 게임 자체는 혼자서도 구동되는거나 서버까지 제공할수 있도록 구성하고 외부 서비스이용은 최소로 해서 서비스 단종시에도 문제없도록 구축할것
using System;
using System.Threading;
using System.Threading.Tasks;
using Telegram.Bot;
using Telegram.Bot.Exceptions;
using Telegram.Bot.Polling;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
namespace TelegramBotExample
{
class Program
{
private static ITelegramBotClient botClient;
static async Task Main(string[] args)
{
botClient = new TelegramBotClient("YOUR_BOT_API_KEY");
using var cts = new CancellationTokenSource();
// StartReceiving does not block the caller thread. Receiving is done on the ThreadPool.
botClient.StartReceiving(
HandleUpdateAsync,
HandleErrorAsync,
new ReceiverOptions
{
AllowedUpdates = Array.Empty<UpdateType>() // receive all update types
},
cancellationToken: cts.Token
);
var me = await botClient.GetMeAsync();
Console.WriteLine($"Start listening for @{me.Username}");
Console.ReadLine();
// Send cancellation request to stop bot
cts.Cancel();
}
private static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
if (update.Type == UpdateType.Message && update.Message?.Text != null)
{
var message = update.Message;
Console.WriteLine($"Received a message from {message.Chat.Id}: {message.Text}");
await botClient.SendTextMessageAsync(
chatId: message.Chat.Id,
text: "You said:\n" + message.Text,
cancellationToken: cancellationToken
);
}
}
private static Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
{
var errorMessage = exception switch
{
ApiRequestException apiRequestException
=> $"Telegram API Error:\n[{apiRequestException.ErrorCode}]\n{apiRequestException.Message}",
_ => exception.ToString()
};
Console.WriteLine(errorMessage);
return Task.CompletedTask;
}
}
}
decimal 최소 값: -79228162514264337593543950335
decimal 최대 값: 79228162514264337593543950335
decimal 예제: 1.1234567890123456789012345678