1

(6 відповідей, залишених у C#, .NET)

float Hours = 09;
float Minutes = 00;
if (DateTime.Now.Hour == Hours && DateTime.Now.Minute == Minutes) {
    AddReward();
}

Чи можна в цьому випадку таймер на хвилину? Чи не пропустить він виконання методу, або двічі його не виконає?

2

(6 відповідей, залишених у C#, .NET)

В мене застосунок працює постійно. Консольний  застосунок і мені просто потрібно щоб він кожного дня в певний час виконував метод AddReward() незалежно коли запущений застосунок

3

(6 відповідей, залишених у C#, .NET)

Всім привіт. Потрібна написати код щоб кожного дня в певний час виконувався метод. Шукав інформацію знайшов що можна зробити таймером, але це трохи мені не підходить тому що після перезапуска програми таймер стартує заново. Хто може порекомендувати як це краще реалізувати? ось код з таймером

static void Main(string[] args) {
    SetTimer();
    Console.ReadLine();
    aTimer.Stop();
    aTimer.Dispose();
}
private static void SetTimer() {
    aTimer = new System.Timers.Timer(86400000);
    aTimer.Elapsed += OnTimedEvent;
    aTimer.AutoReset = true;
    aTimer.Enabled = true;
}
private static void OnTimedEvent(object sender, ElapsedEventArgs e) {
    Console.WriteLine(e.SignalTime);
    AddReward();
}

По цьому коду все працює виконується AddReward таймер 86400000 це є 24 години і кожні 24 години спрацьовує, але цей таймер залежить від часу запуску, або перезапуску програми.
Мені потрібно щось типу такого.

float Hours = 09;
float Minutes = 00;
if (DateTime.Now.Hour == Hours && DateTime.Now.Minute == Minutes) {
    AddReward();
}

Буду вдячний за допомогу

4

(3 відповідей, залишених у C#, .NET)

Якщо це так, що бот не може відправити повідомлення поки користувач не надішле йому, тоді як боти надсилають кожного дня всім користувачам сповіщення? Особисто мені приходять сповіщення в бот в якому я є кожного дня в певний час і якось він може відправити всім користувачам сповіщення?

Всім привіт зіткнувся з такою проблемою що неможу надіслати повідомлення користувачу знаючи його чат ід. https://telegrambots.github.io/book/2/s … index.html тут шукав так і не знайшов. Так само в ютубі і гуглі толком нічого немає. Можливо хтось писав бота та знає як це реалізувати.

async static void BuyProducts(int id,int idProduct,ITelegramBotClient client,long chat)
{
    await using(ApplicationContext db = new ApplicationContext())
    {
        UsersDTO user = db.Users.FirstOrDefault(u => u.TelegramID == id);
        SellProducts buyProduct = db.SellProdukts.FirstOrDefault(p => p.Id == idProduct);
        if(user.Balance < buyProduct.Price)
        {
            await client.SendTextMessageAsync(chat, @$"У вас невистачає коштів!
Ваш баланс: {user.Balance} TRX
Вартість на {buyProduct.Name} : {buyProduct.Price} TRX");
        }
        else
        {
            user.Balance -= buyProduct.Price;
            if(buyProduct.Name == "Зерно")
            {
                user.Grain += buyProduct.Count;
            }
            int idclient = buyProduct.TelegramID;
            db.Users.Update(user);
            db.SellProdukts.Remove(buyProduct);
            db.SaveChanges();
            await client.SendTextMessageAsync(chat, "Ви успішно купили Зерно!");
            UsersDTO sendclient = db.Users.FirstOrDefault(c => c.TelegramID == idclient);
            Console.WriteLine(sendclient.TelegramID);
            sendclient.Balance += buyProduct.Count;

            long buy = (long)sendclient.TelegramID;
            await client.SendTextMessageAsync(buy, "Ви успішно продали Зерно!");
            db.Users.Update(sendclient);
            db.SaveChanges();
        }
    }
}

В коді реалізується покупка та надсилається повідомлення покупцеві тут працює все добре

 await client.SendTextMessageAsync(chat, "Ви успішно купили Зерно!");

але коли я хочу надіслати продавцеві що його продукт продано видає помилку Telegram.Bot.Exceptions.ApiRequestException: 'Bad Request: chat not found'

 await client.SendTextMessageAsync(buy, "Ви успішно продали Зерно!");

Буду вдячний за будь які відповіді.

6

(5 відповідей, залишених у C#, .NET)

Яку базу даних порекомендуєте саме для мого проекту?Мені не принципово з якою працювати. Але сайти якось працюють і приймають одночасно багато запитів і все працює без помилок?

7

(12 відповідей, залишених у Залізо)

Купив 1050ti для мене це оптимальний варіант і блок живлення не потрібно міняти і працює супер

8

(5 відповідей, залишених у C#, .NET)

Все добре все запрацювало виявляється база даних була відкрита в застосунку DB Browser (SQLite) і не було до неї доступу. Я незнаю як вона себе поведе коли з бота буде декілька запитів одночасно?Чи вона буде опрацьовувати їх по черзі чи помилки буде видавати

9

(5 відповідей, залишених у C#, .NET)

Всім привіт! Пишу бота на C# Net core. Використовую Entity Framework та Sqlite і виникла проблема.
В цьому коді все працює добре

       async static Task Update(ITelegramBotClient clientBot, Telegram.Bot.Types.Update update, CancellationToken token)
        {
            var message = update.Message;
            ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(new[]
{
            new KeyboardButton[] { "Button", "Button" },
            new KeyboardButton[] { "Button", "Button" },
            new KeyboardButton[] { "Button", "Button" },
            new KeyboardButton[] { "Button", "Button" }
})
            {
                ResizeKeyboard = true
            };
            if (message.Text != null)
            {
                if (message.Text=="/start")
                {
                    await using Stream stream = System.IO.File.OpenRead(@"C:\FarmBot\FarmImage.jpg");
                    await clientBot.SendPhotoAsync(message.Chat.Id, new InputOnlineFile(stream, "FarmImage.jpg"), message.Caption = "text "+ message.Chat.FirstName + "text", replyMarkup: replyKeyboardMarkup);
                    using (ApplicationContext db = new ApplicationContext())
                    {




                        UsersDTO dto = new UsersDTO();
                        dto.TelegramID = (int)message.Chat.Id;
                        dto.Balance = 0;
                        dto.Plot = 1;
                        dto.Tractor = 0;
                        dto.Grain = 50;
                        dto.Incubator = 0;
                        dto.Chickens = 0;
                        dto.Eggs = 0;
                        db.Users.Add(dto);
                        db.SaveChanges();
                        Console.WriteLine("Данi збереженi");
                        var users = db.Users.ToList();
                        foreach (UsersDTO user in users)

                            Console.WriteLine($"{user.Id}.{user.TelegramID}, {user.Balance}, {user.Plot}");


                    }

Але це мене не влаштовує тому що кожного разу коли буде виконуватися /start буде додаватися той самий TelegtemID в базу даних де він уже є.
Якщо я намагаюсь скористатись пошуком чи є цей ID в базі видає помилку

 using (ApplicationContext db = new ApplicationContext())
                    {



                        var client = db.Users.Find((int)message.Chat.Id)
                        if(client == null){
                        UsersDTO dto = new UsersDTO();
                        dto.TelegramID = (int)message.Chat.Id;
                        dto.Balance = 0;
                        dto.Plot = 1;
                        dto.Tractor = 0;
                        dto.Grain = 50;
                        dto.Incubator = 0;
                        dto.Chickens = 0;
                        dto.Eggs = 0;
                        db.Users.Add(dto);
                        db.SaveChanges();
                        Console.WriteLine("Данi збереженi");
                        var users = db.Users.ToList();
                        foreach (UsersDTO user in users)

                            Console.WriteLine($"{user.Id}.{user.TelegramID}, {user.Balance}, {user.Plot}");
                       }


                    }

В цьому коді додав просту перевірку чи є цей клієнт в базі, якщо немає додаємо. І з цією перевіркою код вже не праює

 private static Task Error(ITelegramBotClient client, Exception exception, CancellationToken token)
 {
     throw new NotImplementedException();
   
 }

ось переходить в Task Error
Подумав можливо проблема в Task зробив окремий метод для додавання клієнтів

 if (message.Text=="/start")
{AddClient(message.Chat.Id)
}
async static void AddClient(int id) {
  await using (ApplicationContext db = new ApplicationContext())
    {
       var add = db.Users.Find(id);
        Console.WriteLine(add);
        if (add == null)
        {


            UsersDTO dto = new UsersDTO();
            dto.TelegramID = id;
            dto.Balance = 0;
            dto.Plot = 1;
            dto.Tractor = 0;
            dto.Grain = 50;
            dto.Incubator = 0;
            dto.Chickens = 0;
            dto.Eggs = 0;
            db.Users.Add(dto);
            db.SaveChanges();
            Console.WriteLine("Данi збереженi");
            var users = db.Users.ToList();
            foreach (UsersDTO user in users)

                Console.WriteLine($"{user.Id}.{user.TelegramID}, {user.Balance}, {user.Plot}");


        }

    }

Після цього Помилка стається на db.SaveChanges(); помилка 5 База даних заблокована
Що я роблю не так? Як це правильно написати?Буду вдячний будь якій допомозі

10

(12 відповідей, залишених у Залізо)

Який блок живлення порекомендуєте для rx580 8G?

11

(12 відповідей, залишених у Залізо)

Тоді кращим варіантом буде rx 550 4G DDR5 ніж 1030 і тоді і блок живлення не прийдеться міняти

12

(12 відповідей, залишених у Залізо)

Дякую за відповідь. А чи небуде проблем через те що оперативна память DDR3,а відеопамять DDR5?

13

(12 відповідей, залишених у Залізо)

Всім доброго дня. Вирішив на своєму старому ПК замінити відеокарту так як там стоїть стара GT 430, а хотілося б щось поновіше. Придивляюсь до RX 570 - 580 на 4-8G, але незнаю чи вона буде на моїй материнці працювати так як там швидше за все PCI Express першої версії, а ця відеокарта хоче третьої версії. Шукав інформацію в гуглі про ці версії PCI Express то зрозумів що на старіших версіях швидкість передачі даних нижча ніж в третій і відеокарта не зможе працювти на всі 100%, але мені не принципово щоб вона працювала на всі 100% головне щоб працювала на те скільки позволяє PCI Express. Підскажіть чи буде взагалі працювати ця відеокарта в моїй материнці? Можливо хтось теж користується на таких материнках з такими відеокартами? Буду вдячний будь яким відповідям просто не має бажання викинути гроші як вона не буде працювати.
Материнська плата: Asrock n68c-s ucc
Процесор: AMD Phenom x6 1055T 2.8GHz - максимальний для цієї материнки 6 ядер
Оперативна память: DDR3 16G 1600
SSD: 250G
HDD: 1TB
Блок живлення 500wat

14

(5 відповідей, залишених у C#, .NET)

Велике дякую все працює. Чи можливо зберегти дані годин-хвилин без бази даних?

15

(5 відповідей, залишених у C#, .NET)

Всім привіт виникла проблема в додаванні години і хвилини в DateTime може я щось не так роблю?

DateTime compoff;
if (textBox1.Text != ""&&textBox2.Text != "") {
    double h = Convert.ToDouble(textBox1.Text);
    double m = Convert.ToDouble(textBox2.Text);
    compoff = DateTime.Now.AddHours(h);
    compoff = DateTime.Now.AddMinutes(m);

    pictureBox1.Visible = true;
    button1.Visible = true;
    progressBar1.Visible = true;
    progressBar1.Maximum = Convert.ToInt32(h) * 60 * 60;
    timeroff.Start();
}

Потрібно додати "h" і "m" додає тільки мінути бо вони додаються вже після годин, якщо поміняти місцями

compoff = DateTime.Now.AddHours(h);
compoff = DateTime.Now.AddMinutes(m);

додає години хвилин немає. Як можна це виправити?